文件大小:101.46 KB
文件类型:zip
发布时间:2014-06-20 23:43:28
需资源分:1
下载次数:5
Tag:c语言
::资源简介::
调试下列程序,使之具有如下功能:任意输入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",*p);
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;
}
解析:sum函数中形参a,b与实参a,b是值传递,只能由实参传递到形参,其为单向。实参p与形参c之间是地址传递。故为双向。但在swap函数中a,b同为地址。但交换a,b指针的指向不能起到交换值的作用。因为c语言中实参与形参之间的数据传递是单向的“值传递”方式。用指针变量做函数参数时也要遵守这一规则。不可能通过函数来改变实参指针变量的值,但可以改变实参指针变量所指向变量的是值。
::下载地址::
>> 评论