1. 会,系统在初始化时就为字符串"abc“分配了内存
2. 这个”abc"的地址就是数组a的首地址
char a[]="abc"
等价于
char a[4]="abc"。
还有个自动加上的字符串结束符。
这是数组初始化自然会分配内存,因为在初始化时使用了""引号,所以会自动加上\0。
一个char是8个位,也就是一个字节,所以须要在栈上开辟四个字符的大小空间。
有一种情况例外
char *const p = "abc";
该 字符串被分配到字符常量区。返回一个指针交给p。并不会开新的栈上空间。
只所以要加const是因为他指向的是静态常量不能修改。当然你可以改这个p指向的地址
像这样的问题最好自己测试一下,下面是c、c++测试,, 如果自己不动手,学不到东西的
#include
#include
using namespace std;
char ss[]="abc";
int main()
{
printf("%d\n",&ss[0]);
cout<
}
结果 4313088 abc