这些放在了什么地方?该怎么解决
这些放在了什么地方?
请问:
char p1[]= "a ";
char* p2= "b ";
请问字符串“a”、“b”放在了什么地方?
p1、p2是不是在栈里?
p2应该不是属于动态分配吧?
谢谢!
------解决方案--------------------
char p1[]= "a "; //p1 在栈上, "a " 作为 p1 数组的内容
char* p2= "b "; //p2 在栈上, "b " 是一个独立的常量字符串保存在 常量区,p2指向这个字符串的首地址
------解决方案--------------------
p1在栈上,里面有2个字符 'a '和\0,
p2在栈上,里面是4字节的地址值,“b”的地址。
"a ", "b "都在静态存储区域(常量区)
------解决方案--------------------
那么为什么“a”和“b”不在同一个地方呢
------------------------------------------
"a "和 "b "是在同一地方,也就是: "a "和 "b "都放在静态常量区
只是对于char p1[]= "a ";
从常量区拷贝了一份内容到p1所在的栈区
而对于char* p2= "b ";
把常量区 "b "的首地址赋给了char *d的变量p2
------解决方案--------------------
char p1[]= "a ";
char* p2= "b ";
请问字符串“a”、“b”放在了什么地方?
p1、p2是不是在栈里?
p2应该不是属于动态分配吧?
-------------------------------------------------
"b "放在静态存储区,而 "a "放在栈上的数组里面。
p1和p2都在栈上。
p2不属于动态分配。
请问:
char p1[]= "a ";
char* p2= "b ";
请问字符串“a”、“b”放在了什么地方?
p1、p2是不是在栈里?
p2应该不是属于动态分配吧?
谢谢!
------解决方案--------------------
char p1[]= "a "; //p1 在栈上, "a " 作为 p1 数组的内容
char* p2= "b "; //p2 在栈上, "b " 是一个独立的常量字符串保存在 常量区,p2指向这个字符串的首地址
------解决方案--------------------
p1在栈上,里面有2个字符 'a '和\0,
p2在栈上,里面是4字节的地址值,“b”的地址。
"a ", "b "都在静态存储区域(常量区)
------解决方案--------------------
那么为什么“a”和“b”不在同一个地方呢
------------------------------------------
"a "和 "b "是在同一地方,也就是: "a "和 "b "都放在静态常量区
只是对于char p1[]= "a ";
从常量区拷贝了一份内容到p1所在的栈区
而对于char* p2= "b ";
把常量区 "b "的首地址赋给了char *d的变量p2
------解决方案--------------------
char p1[]= "a ";
char* p2= "b ";
请问字符串“a”、“b”放在了什么地方?
p1、p2是不是在栈里?
p2应该不是属于动态分配吧?
-------------------------------------------------
"b "放在静态存储区,而 "a "放在栈上的数组里面。
p1和p2都在栈上。
p2不属于动态分配。