1.有如下程序段:
#include
void GetMemeory(char *p)
{
p = (char *)malloc(100);
}
void Test()
{
char *str = NULL;
GetMemeory(str);
扫描二维码关注公众号,回复:
5041332 查看本文章
strcpy(str, “Thunder”);
strcat(str + 2,
“Downloader”);
printf(str);
}
请问运行Test函数结果是:
·
Thunder Downloader
·
under Downloader
·
Thunderownloader
·
程序崩溃
这里考察的是,要修改实参,就要传递实参的地址
笔记:对空指针操作是非法的,而引起崩溃。.C语言函数值传递,str是一个指针(地址),传给形参只是副本,所以str最后还是空指针。
p只是局部变量 退出函数后没有任何意义,str仍然没有被分配空间,故而程序崩溃
#include “stdio.h”
#include <string.h>
#include <malloc.h>
void GetMemory(char
**p){
*p = (char *)malloc(100);
}
void Test(){
char *str = NULL;
GetMemory(&str);
strcpy(str,“Thunder”);
strcat(str+2,“Downloader”);
printf(str);
}
int main()
{
Test();
return
0;
}