- 7
- 0
- 约 4页
- 2015-08-03 发布于重庆
- 举报
GetMemory 函数的几种经典考法
//NO.1:程序首先申请一个char类型的指针str,并把str指向NULL(即str
里存的是NULL的地址,*str为NULL中的值为0),调用函数的过程中做了如
下动作:1申请一个char 类型的指针p,2把str的内容copy到了p里(这是
参数传递过程中系统所做的),3为p指针申请了100个空间,4返回Test函数.最
后程序把字符串hello world拷贝到str指向的内存空间里.到这里错误出现了!
str的空间始终为NULL而并没有实际的空间.深刻理解函数调用的第2步,将
不难发现问题所在!
void GetMemory(char *p)
{
p = (char*)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, hello world);
printf(str);
}
//请问运行Test函数后会是什么样的结果?
//NO.2:程序首先申请一个char类型的指针str,并把str指向NULL.调用函数
的过程中做了如下动作:1申请一
原创力文档

文档评论(0)