您的位置:首页 > 其它

char str[] = "hello world";和char *str = "hello world";区别

2012-11-15 15:56 1726 查看
char *strA()
{
char str[] = "hello world";
return str;
}
str[] = "hello world"//"hello world"常量字符串在内存中有两份拷贝,一份在动态分配的栈中,一份在静态存储区,str[]数组为函数内部局部变量,存储在栈上,在strA()函数退出时,栈要清空,局部变量的内存也被清空

char *strA()
{
char *str = "hello world";
return str;
}

char *str = "hello world"//一份拷贝,"hello world"是常量字符串存在静态数据区,把该字符串常量存在的静态数据区的首地址赋给指针str,所以strA()函数退出时,该字符串常量所在内存不会被回收,故能通过指针访问;

char *strA()

{

static char str[] = "hello world";//static变量被保存在静态存储区而不是堆栈,

return str;

}


此题参考《程序员面试宝典》

/article/6913678.html

http://hi.baidu.com/pasan/item/735c5d0bbee290e0fe240da7
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐