C语言用指针求和两个数以及交换
调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求: ⑴ 2个数的和, ⑵ 2个数交换值。#include <stdio.h>
void main( )
{ int a,b,c,*p=&c;
voidsum(int,int ,int *);
void swap(int * ,int * );
scanf("%d,%d",&a,&b);
sum(a,b,p);
swap(&a,&b);
printf("sum=%d\n",c);
printf("a=%d,b=%d\n",a,b);
}
voidsum(int a,int b,int *c)
{ *c=a+b;
}
void swap(int *a,int *b)
{ int *t;
t=a;
a=b;
b=t;
}
麻烦各位帮我看看这个程序错在哪里,为什么打出来的值不对 本帖最后由 jackz007 于 2020-2-5 00:41 编辑
在 swap() 中,需要交换的的是两个输入指针所指向内存中的数据,而不是交换两个指针的值,因为作为函数输入参数的两个指针属于局部变量,在函数中对它们所做修改的影响范围只限于 swap() 函数以内,并不能作用到主函数 main() 中 。
#include <stdio.h>
voidsum(int a , int b , int * c)
{
* c = a + b ;
}
void swap(int * a , int * b)
{
int t ;
t = * a ;
* a = * b ;
* b = t ;
}
int main( )
{
int a , b , c ;
scanf("%d%d" , & a , & b) ;
sum(a , b , & c) ;
swap(& a , & b) ;
printf("sum = %d\n" , c) ;
printf("a = %d , b = %d\n" , a , b) ;
} jackz007 发表于 2020-2-5 00:11
在 swap() 中,需要交换的的是两个输入指针所指向内存中的数据,而不是交换两个指针的值,因为作为函 ...
懂了懂了,谢谢了
页:
[1]