文字常量区和栈区区别

char*fun()

{

  char*p = “ab”;

  return  p;

}

char*fun1()

{

  char *arry[10] = "ab"

  char*q = arry;

  return  q;

}

int main()

{

  char*p =fun();

  puts(p);//正确,打印文字常量区的一个字符串。

  char *q = fun1(); 

  puts(q);//错误,因为字符串被放在了栈区,当fun1执行完之后,字符串数组占用的空间已经被释放掉,这些空间可能被其他程序的局部变量占用。导致打印乱码。

}

原文地址:https://www.cnblogs.com/vhwuln/p/3565012.html