首页 >后端开发 >C++ >为什么'sizeof”对字符串文字、指针和字符数组产生不同的结果?

为什么'sizeof”对字符串文字、指针和字符数组产生不同的结果?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-01 06:28:15904浏览

Why Does `sizeof` Produce Different Results for String Literals, Pointers, and Character Arrays?

字符串文字的大小

给定的代码演示了 sizeof 运算符在不同类型的字符串常量上的用法。输出显示字符串文字的大小 sizeof("f") 与指向字符串文字的指针的大小 (sizeof(foo)) 以及字符数组的大小 (sizeof(bar) )).

为什么 sizeof 计算字符串文字的长度?

sizeof 运算符计算其操作数的大小字节。对于字符串文字,操作数是相应的字符数组表示形式,包括终止空 (' ') 字符。这解释了 sizeof("f") 的 2 输出,因为它考虑了 'f' 和 ' ' 字符。

当给 sizeof 时,字符串文字是否有不同的类型?

没有。字符串文字的类型为 const char[N],其中 N 是字符串的长度,包括终止空字符。但是,当将字符串文字传递给 sizeof 运算符时,它会将字符串视为 const char* 类型的表达式,该类型是指向字符的指针类型。这解释了 sizeof(foo) 的 4 的输出,因为它是 32 位机器上指针的大小。

其他要点:

  • 当传递给 sizeof 时,数组不会衰减为指针。这解释了 sizeof(bar) 的 2 输出,因为 bar 是常量字符数组。
  • sizeof 的字符串文字参数的类型会影响结果。例如,sizeof("foo" 1) 在 32 位和 64 位机器上都会返回 4,因为操作数是 const char* 类型的表达式。

以上是为什么'sizeof”对字符串文字、指针和字符数组产生不同的结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn