(9)-属于函数作用域里的字串

最后更新于:2022-04-01 16:11:12

**代码**: ~~~ #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*](http://blog.csdn.net/zhanxinhang)) to have a communication ======= ……………………………………………………………………………………………………………………………………
';