您的位置:首页 > 编程语言 > C语言/C++

C语言 指针相关问题--调用函数实现空间动态申请

2011-04-15 16:43 597 查看
下面程序功能申请一块空间有什么问题?(为了简化篇幅,省略malloc是否分配成功的处理)

void getspace(char *pi)
{
pi = (char*)malloc(10*sizeof(int));
}
int main()
{
int i = 0;
char *p = NULL;
getspace (p);
for(i = 0;i<10;i++)
p[i] = i;
}
可以理解主函数中的指针p与getspace当中的指针pi属于同级变量,与普通同级实参变量a和形参ai是的形实传递时一样的道理。ai只是a的一个复制,是用a的值对ai进行赋值,对ai的操作不会影响到a。同理,pi只是p的一个拷贝,p和pi代表的是不同的地址,对pi的操作也不回影响到p的值,不涉及地址的间接访问问题。

如果想要实现上述目的,可以用如下的方法:

void GetSpace(char **p)
{
*p=(char *)malloc(20*sizeof(char));
}
void main()
{
int i;
char *p;
GetSpace(&p);
for(i=0;i<20;i++)
{
p[i]=i;
printf("%-4d",p[i]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: