c++ - 为什么 sizeof(str) 等于 8 ,而它应该等于 strlen(str)+1 ...(因为额外的空字符)?
问题描述
当我打印 strlen(str) 和 sizeof() 这是一个字符数组:
const char *str = "Geeksforgeeks";
当我打印 strlen(str) 和 sizeof(str) 时,输出为:
cout<<strlen(str)<<endl;
cout<<sizeof(str)<<endl;
输出:
strlen(str): 13
sizeof(str): 8
- 不应该是这样;由于额外的空字符,sizeof() 应该返回 14?
- 我对较小的字符串进行了尝试,并且 sizeof() 值没有改变,仍然是 8 ?
解决方案
为什么 sizeof(str) 等于 8
因为 的类型str
是const char *
指向 的指针const char
,而您系统上的指针大小恰好是 8 个字节。
当它应该等于 strlen(str)+1 ...</p>
不,不应该,因为该数字不是sizeof
运算符返回的类型的大小。
推荐阅读
- c# - 隐藏生命条直到敌人在附近 C#
- javascript - React Native/Expo 问题将应用 URL 发送到电话或电子邮件。错误:无法获取本地颁发者证书
- php - 从外部服务器生成网站内容?
- ios - 在 Swift 中使用单例和解析 JSON
- sql-server - SSMS 保持连接打开是否有更深层次的原因?
- c# - 连接 ControllerBase.User 和数据库用户
- python - 如何在 3D 绘图(熊猫)中指定 kmeans 簇的颜色?
- python - 重塑熊猫中的数据框
- docker - docker image后面的命令是什么意思
- wordpress - Sage 主题构建错误:runLoaders 中的 UTF-8 无效