代码疑云(9)-属于函数作用域里的字串

代码

#include <stdio.h>
char* GetString1()
{
    char p[] = "Hello World";
    return p;
}
char* GetString2()
{
    char *p = "Hello World";
    return p;
}
int main()
{
    printf("GetString1 returns: %s. \n", GetString1());
    printf("GetString2 returns: %s. \n", GetString2());
 
    return 0;
}
(感谢网友提供的题目)

:以上输出结果是什么情况?




………………………………………………………………………………………………………………………………………………………



解答:结果是GetString1()是乱码,GetString2()是 “Hello World”。因为GetString1()返回的是是指向该函数作用域里的局部变量char p[]的首内存空间,而当函数返回到主函数时,该内存空间将会被释放,所以P指向了一个无效的内存空间。而GetString2()中的p是指向全局对象(字符串“Hello World”)的,所以是“HelloWorld”.

======= welcome to my HomePage(http://blog.csdn.net/zhanxinhang) to have a communication =======



……………………………………………………………………………………………………………………………………



你可能感兴趣的:(代码疑云(9)-属于函数作用域里的字串)