gpt4 book ai didi

c++ - 字符指针和字符串的大小

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:12 25 4
gpt4 key购买 nike

我测试了 char 数组、指针和字符串的长度/大小,如下代码所示。
为什么 sizeof(pArray) 是 8?我猜这是一个指针,应该是 4。
为什么 sizeof(str) 是 8 而不是 6 或 7?
为什么 sizeof("abcdef") 是 7 而不是 6?

char array1[10] = {'a', 'b'};
char array[10] = "abcdef";
const char * pArray = "abcdef";
string str = "abcdef";
printf("array1:%d, array:%d, pArray:%d, str:%d,strsize:%d, strlen:%d, raw:%d\n", sizeof(array1), sizeof(array), sizeof(pArray), sizeof(str), str.size(), str.length(), sizeof("abcdef"));

程序输出:

array1:10, array:10, pArray:8, str:8,strsize:6, strlen:6,  raw:7

最佳答案

  • sizeof(array1) 是 10,因为您用 10 个元素声明它。
  • sizeof(array) 同理也是10;
  • sizeof(pArray) 是 8 可能是因为你在 64 位机器上,所以 8 字节 = 64 位;
  • 由于 sizeof(str) 是类结构的大小,您将获得唯一内部指针的大小,在您的情况下是 8 个字节(因为您在 64 -bit 机器,这也可以随着平台的不同而变化);
  • str.size()str.length() 返回相同的 - 它是字符串本身的长度;
  • sizeof("abcdef") 为 7,因为 C 中的常量字符串总是在末尾获取隐式字符 '\0' 以正确终止,因此为 1字符串中的更多字节 (6 + 1 = 7);

关于c++ - 字符指针和字符串的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29829614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com