首页 > 代码库 > 通过指针形参修改实参的值2
通过指针形参修改实参的值2
注意:图示使用的地址只是假设的,并不是真正的内存地址,只是说明原理
上次说到的是修改基本类型的变量,这次来说修改指针变量的值
#include <stdio.h> void change(int *a){ int temp = 555; a = &temp;}int main(){ int i = 5; int *p = &i; printf("%p\n", p); change(p);//并没有修改成功p的值 printf("%p\n", p); getchar(); return 0;}
原因还是和以往一样,函数只是改变了a的指向,并没有影响到p
既然p是一个变量,那么要改变它就要通过传递它的地址找到它,然后修改内存数据,修改程序为
#include <stdio.h> void change(int **a){ int temp = 555; printf("%p\n", &temp); *a = &temp;}int main(){ int i = 5; int *p = &i; printf("%p\n", p); change(&p); printf("%p\n", p); getchar(); return 0;}
可以看到,成功改变了p的值,再看看内存的结构图,函数刚开始运行
修改了*a,就是修改了p的内容,修改完后p的地址是temp的,p也指向了temp
通过指针形参修改实参的值2
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。