可能重复:
What is the difference between char a[] = “string”; and char *p = “string”;
数组版本是否会分配数组内存,因此100字节字符串将在常量部分使用100个字节,在静态数组上使用100个字符,或者它将仅使用100个字节?和指针版本一样,除了字符串的100个字节之外,还会为指针分配字大小,还是将指针优化为常量段地址?
答案 0 :(得分:1)
如果您使用的是普通计算机,请使用.rodata
部分:
#include <stdio.h>
static const char *s = /* string of 100 characters */;
int main(void)
{
puts(s);
return 0;
}
它在100 + sizeof(char *)
部分中分配.rodata
个字节。
#include <stdio.h>
static const char s[100] = /* string of 100 characters */;
int main(void)
{
puts(s);
return 0;
}
它在100
部分中分配.rodata
个字节。