有三个函数,有什么不同
时间:2010-08-01
来源:互联网
- void f1(int p)
- {
-
-
- }
- void f1(int *p)
- {
- p=(int *)malloc(SIZE);
- }
-
-
- void f1(int **p)
- {
- *p=(int *)malloc(SIZE);
- }
作者: 0vk0 发布时间: 2010-08-01
作者: langue 发布时间: 2010-08-01
作者: mik 发布时间: 2010-08-01
void f1(int *p){ p=(int *)malloc(SIZE); } 参数为传址,即上层函数给p分配的地址可以传进f1,在f1中改变*p的值可以返回给上层函数;但要注意,如果试图改变p的值,上层函数是无法取到的,就像这个例子,给p分配的空间是无法传给上层函数的。
void f1(int **p){ *p=(int *)malloc(SIZE); } 参数为传址。这个例子中f1中给*p分配的空间可以返回给上层函数的。
作者: gu_wh 发布时间: 2010-08-01
{
int *q;
f1(q);
}
void f1(int *p){ p=(int *)malloc(SIZE); }
p和q是两个地址,调用的时候把q指向的内存区传给了,
所以调用函数开始处p和q指向同一块内存区,如果对指针指向的数据进行操作的话结果是一样的;
不过指针本身是两个指针?
f1执行新的操作,是p指向新的一块内存区,p和q指向不同的内存区,返回后p本身是在栈中分配空间的被收回,分配是数据区malloc成为内存泄露区,而原来的指针q什么也不没有变,感觉p从来就没有存在过一样~~
对于最后一个就是,指向指针的指针,*p就可以改变源指针的指向了,因为把q自己的地址传进来而不是他指向的数据区地址~~~~void f1(int **p)---这是改变地址的方法~~~~
作者: zbhddt6 发布时间: 2010-08-01
作者: pandaiam 发布时间: 2010-08-01
作者: liwangli1983 发布时间: 2010-08-01
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28