是什么静态常量char * const的和静态为const char []的区别? [重复](W

2019-10-17 14:31发布

可能重复:
是什么字符之间的[] =“字符串”的差值; 与char * p值=“字符串”;

将数组版本分配阵列中的存储器,所以一个100字节字符串将使用在静态阵列上的恒定截面和100 100个字节,还是会仅使用100字节总? 和指针的版本,将其分配字的大小为除了100个字节字符串的指针,或将指针被完全优化,以恒定部地址?

Answer 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部。



文章来源: What is the difference between static const char * const and static const char []? [duplicate]