可能重复:
是什么字符之间的[] =“字符串”的差值; 与char * p值=“字符串”;
将数组版本分配阵列中的存储器,所以一个100字节字符串将使用在静态阵列上的恒定截面和100 100个字节,还是会仅使用100字节总? 和指针的版本,将其分配字的大小为除了100个字节字符串的指针,或将指针被完全优化,以恒定部地址?
可能重复:
是什么字符之间的[] =“字符串”的差值; 与char * p值=“字符串”;
将数组版本分配阵列中的存储器,所以一个100字节字符串将使用在静态阵列上的恒定截面和100 100个字节,还是会仅使用100字节总? 和指针的版本,将其分配字的大小为除了100个字节字符串的指针,或将指针被完全优化,以恒定部地址?
如果您使用的是常见的电脑,用.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
部。