首页 > 后端开发 > C++ > `sizeof` 如何以不同方式处理 C 中的字符串文字、数组和指针?

`sizeof` 如何以不同方式处理 C 中的字符串文字、数组和指针?

Linda Hamilton
发布: 2024-12-07 09:03:13
原创
154 人浏览过

How Does `sizeof` Differently Handle String Literals, Arrays, and Pointers in C  ?

字符串文字的大小:了解字符串常量的内存占用

在 C 中,字符串文字是代码的组成部分,表示固定序列的字符。 sizeof 运算符对于理解这些字符串文字的内存分配和布局起着至关重要的作用。

问题 1:为什么 sizeof 计算字符串文字的长度?

当应用于字符串文字(例如“f”)时,sizeof 运算符测量存储在文字中的字符数,包括终止空字符 (' ')。对于“f”,它计算存储两个字符所需的空间,因为它包括“f”和空终止符。

问题 2:字符串文字是否有不同给定 sizeof 时的类型?

字符串文字具有不同的类型:具有已知大小的字符数组,其中大小包括空终止符。此类型不同于 char*(指向字符的指针)和 char[](字符数组)。当传递给 sizeof 时,字符串文字的数组类型被保留,导致结果反映数组的大小而不是指针的大小。

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

  • sizeof("f"):返回 2,因为它测量大小包含 'f' 和 ' ' 的字符数组的大小。
  • sizeof(foo):返回 4(在 32 位系统上)或 8(在 64 位系统上),因为它测量保存字符串文字地址的指针变量 foo。
  • sizeof(bar):返回 2,因为它测量包含字符串的字符数组的大小'b' 和 ' '。

记住:

  • 字符串文字的类型:大小为 N 的 const char 数组(其中 N 包括空终止符)。
  • 数组在传递给大小。

以上是`sizeof` 如何以不同方式处理 C 中的字符串文字、数组和指针?的详细内容。更多信息请关注PHP中文网其他相关文章!

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