|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求:   ⑴ 2个数的和,    ⑵ 2个数交换值。
#include <stdio.h>
void main( )
{ int a,b,c,*p=&c;
void sum(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);
}
void sum(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>
void sum(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) ;
}
|
|