当前位置:文档下载 > 所有分类 > 求职/职场 > 求职/面试 > 绝版面试题
侵权投诉

绝版面试题

153、 回答下面的问题

(1).Void GetMemory(char **p, int num){

*p = (char *)malloc(num);//一级指针的值被修改}

void Test(void){char *str = NULL;

GetMemory(&str, 100);//传递的是一级指针的地址strcpy(str, "hello");printf(str);}

请问运行Test 函数会有什么样的结果?答:输出“hello”

输出“world”,由于free后并没有解除内(2).void Test(void){

存映射,所有不会出现段错误,但是非

char *str = (char *) malloc(100);

法的访问内存,指针释放后应该设为

strcpy(str, “hello”);

NULL。

free(str);

if(str != NULL){

strcpy(str, “world”);printf(str);}(3).char *GetMemory(void)

{}

char *p = "hello world";请问运行Test 函数会有什么样的结果?

return p;//返回整个数组的地址

答:输出“world”

}

(3).void Test(void){

char *str = NULL;char *GetMemory(void){

str = GetMemory();char p[] = "hello world";

printf(str);

return p;

}

} /*在函数栈(默认局部栈中,如果有静态的则请问运行Test 函数会有什么样的结果?放在全局栈中)中数组p在离开作用域答:hello world以后内存数据(数组p)有可能被修改,也有可能不被修改,返回很危险。*/void Test(void){

char *str = NULL;str = GetMemory();printf(str);(3).char *GetMemory(void){

static char p[] = "hello world";}

return p;请问运行Test 函数会有什么样的结果?

}

答:无效的指针,输出不确定void Test(void)(4).void GetMemory(char *p){ {

char *str = NULL;p = (char *)malloc(100);

str = GetMemory();

}

strcpy(str, “i love you”);

void Test(void){printf(str);char *str = NULL;}

请问运行Test 函数会有什么样的结果?GetMemory(str);

答:i love you

第1页

猜你喜欢

返回顶部