300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > C语言中 指针在一个自定义且不带返回值是如何改变外部一些变量的(指针与函数的相互

C语言中 指针在一个自定义且不带返回值是如何改变外部一些变量的(指针与函数的相互

时间:2018-07-03 22:23:56

相关推荐

C语言中 指针在一个自定义且不带返回值是如何改变外部一些变量的(指针与函数的相互

如果自定义一个函数,没有任何返回值,而形参是一个指针传入这个函数,在这个函数中,无论如何改变指针所指的方向,函数结束后对外部数据没有变化,唯独通过指针,来间接改变函数以外的变量的值(例如令*p = 一个新的值)。那么此时此刻,在内存中p的地址里的数据已经改变,而函数结束后,该函数对外部做出的贡献就是把原来p的地址里的数据改变了,其他都没变,包括p指针所指的地址。

#include<stdio.h>void change1(int *y){int c = 1000;y = &c;};void change2(int *y){int c = 20;*y = c;//通过指针间接修改原来y所指的值};void main(){int a = 3;int *b = &a;printf("%d\n",a);printf("%d\n",*b);printf("%d\n",b);change1(b);printf("%d\n",a);printf("%d\n",b);printf("%d\n",*b);change2(b);printf("%d\n",a);printf("%d\n",b);printf("%d\n",*b);}

输出结果

3317037403170374030374020Press any key to continue

无论经过多少外部函数,指针b的地址在main()中始终没变,而在change2函数中通过b指针把a的值修改了

C语言中 指针在一个自定义且不带返回值是如何改变外部一些变量的(指针与函数的相互作用)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。