关于几个指针的问题
来源:互联网 发布:数据精灵破解版 编辑:程序博客网 时间:2024/05/13 11:33
下面3个返回指针的函数实现,大家说哪几个是对的,哪几个是错的?为什么?哪个是不能完成要求的功能的?即返回malloc()申请的地址。
/*implement 1*/
void getmemory(int *ptr,int size)
{
ptr = (int *)malloc(sizeof(int)*size);
}
/*implement 2*/
int * getmemory(int size)
{
int *temp = (int *)malloc(sizeof(int)*size);
if(temp != NULL)
{
return temp;
}
return NULL;
}
/*implement 3*/
void getMemory(int **buf,int size)
{
*buf = (int *)malloc(sizeof(int)*size);
}
第一个是错的,第二三个是对的。
第一个是传值,这样不可能返回指针的地址;第二个是直接返回指针的地址;第三个是通过指向指针的指针来返回这个地址;
对于第一个,就好象swap(int a, int b)这里不能实现a,b互换一样,因为函数的参数在调用里是压入到堆栈,这里只是一个临时变量。
同样,对于:
int *ptr;
getmemory(ptr)
在getmemory()函数里,ptr只是一份调用int *ptr的拷贝,不可能通过他返回;
这时我们应该是:
getmemory(&ptr)
int *ptr;
getmemory(ptr)
在getmemory()函数里,ptr只是一份调用int *ptr的拷贝,不可能通过他返回;
这时我们应该是:
getmemory(&ptr)
这样函数的原型应该是implement3 了
- 关于几个指针的问题
- 关于指针应注意的几个小问题
- 关于几个指针的迷惑
- 关于指针的调用实现单向链表及指针函数的几个小问题
- 关于指针的问题
- 关于指针的问题
- 关于指针的问题
- 关于指针的问题
- [转]关于指针的几个概念
- 几个关于jsp的问题
- 几个关于内存的问题
- 关于二重指针的问题
- 关于“野指针”的问题
- 一个关于指针的问题
- 关于指针错误的问题
- 一个关于指针的问题
- 关于指针的引用问题
- 关于C的指针问题
- 迅雷CEO邹胜龙自述:迅雷十年反思
- swfupload jsp入门指南
- A Sample Linker Script
- 寒假前刷题(7)搜索系列 dfs hdu 1010
- IBM Key Management工具(iKeyMan)脚本吃掉%*$*无法接收命令行参数之解
- 关于几个指针的问题
- uva 10282 - Babelfish
- Bootloader移植简述
- Qt 学习之路 2(3):Hello, world!
- Python的elif语句
- 大数加法模板(c++)
- uboot命令大全 --来源于网络(ChinaUnix)
- PS2接口和协议
- 【Android游戏开发之六】在SurfaceView中添加系统控件,并且相互交互数据!