64,649
社区成员
发帖
与我相关
我的任务
分享
char *GetString(void)
{
int b = 1;
char arr[] = "hello world";
char *p = "hello world";
int a = 2;
//以下的值分别是这四个:0012FE7C, 0012FE68, 0041FA14, 0012FE50
printf("%p, %p, %p, %p\n", &b, arr, p, &a); //可以看出arr所指向的字符串地址是在栈,p所指向的字符串地址在常量区
return p; // 编译器将提出警告
//return arr;
}
int main(void)
{
char *str = NULL;
str = GetString(); // str 的内容是垃圾 ( 书上如是说 )
cout << str << endl;
return 0;
}
char *GetString(void)
{
char p[] = "hello world";
return p; // 编译器将提出警告
}
char * foo()
{
char buffer[128];
memset(buffer, 0xCD, 128);
return 0;
}
void Test4(void)
{
char *str = NULL;
str = GetString(); // str 的内容是垃圾 ( 书上如是说 )
foo(); //看看调用这个函数后,底下输出是什么
cout < < str < < endl;
}