2
回答
为什么char* p="sfsdf"在代码段,而char str[]="sfsdf"在栈区!
开发十年,就只剩下这套Java开发体系了   
为什么char* p="sfsdf"在代码段,而char str[]="sfsdf"在栈区!
<无标签>
举报
cytzrs
发帖于5年前 2回/126阅
共有2个答案 最后回答: 5年前

p是个指针。用于指向一个空间。str是个数组,需要自带存储看空间。str作为局部变量,则整体空间在栈内分配。 p指针本身也在栈内分配,而p指向的空间,是静态数据,则不在栈内分配。

p本身作为指针类型,自身存在一个空间,所谓“用于指向一个空间”,是空间内存储的数据指向一个空间。

str本身是个存储空间,str是该存储空间的名称。str就是该空间的整体空间的描述符号。

哈不知道是否解释清楚了。

--- 共有 4 条评论 ---
ericsoul可以这么理解:指出两个等号的差异,第一个等号是把一个常量字符串的首地址赋值给一个指针变量。第二个等号是给一个字符串数组变量初始化。咦,貌似就是类似int a=1;和int a;a=1;的差别哈。 5年前 回复
中山野鬼回复 @prehisle : 哈。你还没有理解清楚吧。我不去写汇编,我也真的无法搞清楚。哈 5年前 回复
sToa第一段说清楚了,后面的补充越说越晕,呵呵 5年前 回复
cytzrs非常感谢 5年前 回复
顶部