aaaaaaa这个字符是放在字符常量区 生命周期是从程序开始到结束 所以函数结束后 字符串的首地址依然有效 而数组是 像这样 char str[]="aaaaaaa"; 这样语句 字符串依然在文字常量区 不过这时str这个数组 保存有aaaaaaa这个字符串的副本(而不是它的首地址) 这个数组是在栈空间的 返回时 函数结束 并回收空间 使得str无效