首页 > 后端开发 > C++ > 为什么 C 中的'sizeof”为字符串文字、指针和数组返回不同的值?

为什么 C 中的'sizeof”为字符串文字、指针和数组返回不同的值?

Patricia Arquette
发布: 2024-11-30 20:40:17
原创
921 人浏览过

Why Does `sizeof` Return Different Values for String Literals, Pointers, and Arrays in C  ?

Sizeof String Literal

在 C 中, sizeof 计算数据类型或表达式的大小。当应用于字符串文字时,sizeof 计算文字的长度,包括终止空字符 (' ')。

了解输出

提供的代码计算字符串文字、const char* const 和 const char[] 的大小。使用 GCC 编译的 32 位操作系统上的输出为:

sizeof(string literal) = 2
sizeof(const char* const) = 4
sizeof(const char[]) = 2
登录后复制

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

sizeof("f") 计算为 2,因为字符串文字由字符 'f' 和终止 null 组成

sizeof 表达式中的类型

  • 字符串文字“f”是一个大小为 2 的 const char 数组,包括 null 终止符。
  • 指针 foo 是一个 const char* const,它指向一个 const char 并且它本身const。
  • 数组 bar 是大小为 2 的 const char[],包含 'b' 和 null 终止符。

警告:sizeof 的数组

请注意,数组在传递给 sizeof 时不会衰减为指针。因此,sizeof(bar) 正确返回 2,而不是指针大小(在 32 位操作系统上为 4)。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板