static const char * const和static const char []有什么区别?

时间:2013-01-12 14:05:06

标签: c++ c memory memory-management static

  

可能重复:
  What is the difference between char a[] = “string”; and char *p = “string”;

数组版本是否会分配数组内存,因此100字节字符串将在常量部分使用100个字节,在静态数组上使用100个字符,或者它将仅使用100个字节?和指针版本一样,除了字符串的100个字节之外,还会为指针分配字大小,还是将指针优化为常量段地址?

1 个答案:

答案 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个字节。