任务代码:
-
#include <stdio.h> -
void swap(int *a ,int *b)//按之前对指针认识,*a代表指针变量a,a存储的是地址,*a是地址的值。 -
{ //但是可以看到下面传输过程中swap(&a,&b),取的是地址传输给了*a.看似是矛盾的! -
//这里着重注意特例!!!:函数的参数是指针类型,会将一个变量的地址传送到被调用的函数中。 -
//不是传递值,是传递地址值!!!!!! -
int t; -
t=*a; -
*a=*b; -
*b=t; -
return; -
} -
int main() -
{ -
int a,b; -
printf("请输入两个数:"); -
scanf("%d %d",&a,&b); -
printf("调用前:%d %d\n",a,b); -
swap(&a,&b);//传输的是a,b两个变量的地址 -
printf("调用后:%d %d\n",a,b); -
return 0; -
}
执行情况:

知识总结:
函数调用结束后回会释放内存空间;

传地址需要运用指针来做:

尤其注意特例:和传统指针概念理解的的不同


另外:这两种看似符合逻辑的做法也是行不通的!(尤其是第二种)
所有函数指针在执行的时候,形式参数的值无论怎么变化都会被内存释放(不会影响返回结果),而真正有存在意义的是形式参数中存放的地址,将会再返回的时候影响结果

心得体会:
本文通过一个简单的C语言程序示例介绍了如何使用指针实现函数间的数据交换,并详细解析了指针作为函数参数时的工作原理。文章强调了在进行地址传递时的注意事项,以及这种做法如何能够有效改变原始变量的值。
1161

被折叠的 条评论
为什么被折叠?



