就业数据资源平台
当前位置:首页 > 笔试题目
笔试题(Test函数)


void GetMemory(char *p)


{


p = (char *)malloc(100);


}


void Test(void)


{


char *str = NULL;


GetMemory(str);


strcpy(str, "hello world");


printf(str);


}


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


答:试题传入GetMemory( char *p )函数的形参为字符串指针,在函数内部修改形参并不能真正的改变传入形参的值,执行完 char *str = NULL; GetMemory( str ); 后的str仍然为NULL;


char *GetMemory(void)


{


char p[] = "hello world";


return p;


}


void Test(void)


{


char *str = NULL;


str = GetMemory();


printf(str);


}


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


答:可能是乱码。 char p[] = "hello world";


      return p; 

的p[]数组为函数内的局部自动变量,在函数返回后,内存已经被释放。这是许多程序员常犯的错误,其根源在于不理解变量的生存期。

 


就业数据资源平台