- #include <stdio.h>
- void change(int n);
- int main()
- {
- int a= 90;
- change(a);
- printf("%d\n",a);
- return 0 ;
- }
- void change(int n)
- {
- n = 10;
- }
- 此段代码为数值传递,输出的a的值仍为90,因为数值传递改变形参的值不影响实参的值
- #include <stdio.h>
- void change(int *n);
- int main()
- {
- int a= 90;
- change(&a);
- printf("%d\n",a);
- return 0 ;
- }
- void change(int *n)
- {
- *n = 10;
- }
- 此段代码为指针传递,调用函数时传入的是a在内存中的地址,所以change进入到地址里修改a的值,输出的a为10
- #include <stdio.h>
- int main()
- {
- int a= 90;
- int *p = &a; //此时的*仅代表是指针类型的变量
- int **pp = &p;//此时的** 仅代表是指向指针类型数据的指针类型的变量
- a= 20;
- *p = 20;//此时的*是访问指针变量p指向的存储空间a,
- //*pp == p//等价替换,此时的*是访问指针变量pp指向的存储空间p,
- //**pp == *p == a
- **pp =20;此时的**是访问指针变量pp指向的存储空间里面的p指向的存储空间a,
- printf("%d\n",a);
- return 0;
- }
复制代码
最后一段代码说明了指向指针的指针,怎么修改int类型a的值, |