不使用引用和全局变量实现函数参数传递
来源:互联网 发布:Sort key sql 编辑:程序博客网 时间:2024/06/02 05:40
linkNode * head = NULLInitList(&head);InitList(linkNode ** pHead){ *pHead = (struct Node*)malloc(sizeof(Node));}
在C语言中没有引用数据类型,所以,如果想通过参数形式修改外部的变量的话,只能借用指针来实现。比如我们经常用到的通过指针来实现两个数的交换代码如下:
int a = 10;int b = 20;int * pa = &a;int * pb = &b;void swap(int * pa,int *pb){ int tmp; tmp = *pa; *pa = * pb; *pb = tmp; }
如下图:
但是通过指针进行参数传递一样也是按值传递的,这个通过上面的图就能看出来。
如果通过上面简单的指针传递方式来修改指针的值的话,显然不行,因为函数里面,函数外的pa,pb不可见,而且退出函数后,因为函数里面的指针变量pa,pb分配在栈中,所以退出会释放空间,
所以,如果我们想通过参数传递来改变外部指针的值的话,我们必须定义指向指针的指针int ** ppa,int ** ppb,这两个指针指向函数外的pa,pb指针,这样就可以通过 *ppa = value的形式修改外面的pa,pb指针的值。
如果这个问题没有弄清楚,经常会引起内存泄露问题,这个我会在后面的文章中继续阐述...
- 不使用引用和全局变量实现函数参数传递
- Perl函数参数中传递数组和引用的使用
- Perl函数参数中传递数组和引用的使用
- 引用和使用引用传递参数《一》
- 引用和使用引用传递参数《二》
- 指针和引用作为函数传递参数
- Java函数参数的值传递和引用传递
- JavaScript中函数参数的值传递和引用传递
- C++函数参数之 引用传递和值传递
- JavaScript中函数参数的值传递和引用传递
- JavaScript中函数参数的值传递和引用传递
- JavaScript中函数参数的值传递和引用传递
- JavaScript中函数参数的值传递和引用传递
- js中函数参数值传递和引用传递
- JavaScript中函数参数的值传递和引用传递
- JavaScript中函数参数的值传递和引用传递
- javascript中,函数参数中的值传递和引用传递
- js中函数参数的值传递和引用传递
- 统一建模语言UML轻松入门(4)――动态建模
- 排序算法总结
- 中国佛学66句震撼世界的禅语
- 如何在iPhone中设置139邮箱IMAP服务?
- 简单多边形三角剖分发图留念
- 不使用引用和全局变量实现函数参数传递
- 国内大学与香港大学的区别,转
- codeforces C. Beaver Game 博弈
- gcc和vc编译器在语法上的比较(转)
- linux进程开发之(六):守护进程
- hdu 1284 钱币兑换问题 完全背包
- Surprising
- servlet 中sql语句的双引号和单引号的用法
- Hibernate缓存配置/批量处理