当前位置: 首页 > news >正文

C++:字符数组与字符串指针变量的大小

#include<iostream>
#include<cstring>
int main(int argc, char const *argv[])
{// 字符数组char str[128] = "hello world";std::cout<<sizeof(str)<<std::endl;std::cout<<strlen(str)<<std::endl;// 字符串指针变量char *str2 = "hello world";std::cout<<sizeof(str2)<<std::endl;std::cout<<strlen(str2)<<std::endl;return 0;
}

结果:

128
11
8
11

在 C++ 中,str2 是一个指向常量字符串 “hello world” 的指针,它并不是字符串本身,而是一个指针,指向该字符串的首字符。sizeof(str2) 会返回指针的大小,而不是字符串的长度。

在大多数平台上,指针的大小通常是 4 字节(对于 32 位系统)或 8 字节(对于 64 位系统)。因此,sizeof(str2) 输出的结果取决于你的系统架构。

对于 64 位系统,sizeof(str2) 会输出 8。
对于 32 位系统,sizeof(str2) 会输出 4。
需要注意的是,sizeof 对于指针类型返回的是指针本身的大小,而不是指针所指向的内容的大小。如果你想获得字符串的长度(包括空字符 ‘\0’),可以使用 strlen 函数:

std::cout << strlen(str2) << std::endl;  // 输出 11,"hello world" 的长度

总结:如果你运行 sizeof(str2),在 64 位系统上输出 8,在 32 位系统上输出 4。

相关文章:

  • 35页AI应用PPT《DeepSeek如何赋能职场应用》DeepSeek本地化部署与应用案例合集
  • 【论文阅读】BEVFormer
  • P8803 [蓝桥杯 2022 国 B] 费用报销
  • TypeScript中文文档
  • 【Java项目脚手架系列】第七篇:Spring Boot + Redis项目脚手架
  • 配置别名路径 @
  • ArcGIS切片方案记录bundle文件
  • 机器学习笔记3
  • 【iOS】alloc的实际流程
  • 106. 从中序与后序遍历序列构造二叉树
  • 本地化部署HomeAssistant语音助手并接入DeepSeek
  • 波导模型(表面等离激元、石墨烯等)本征模式分析、各种类型波导传输效率求解
  • JAVA数组题(7)
  • STL - stack 和 queue 及容器适配器模式的介绍
  • C++11(2)
  • 大语言模型三大演进方向:记忆增强、工具集成与多模态突破
  • 插件双更新:LeetCode 刷题支持正式上线,JetBrains IDE 插件持续升级!
  • 《从零开始入门递归算法:搜索与回溯的核心思想 + 剑指Offer+leetcode高频面试题实战(含可视化图解)》​
  • 机器学习第十三讲:独热编码 → 把“红黄蓝“颜色变成001/010/100的数字格式
  • 将.pt文件执行图像比对
  • 欠债七十万后,一个乡镇驿站站长的中年心事
  • 西安市未央区委书记刘国荣已任西咸新区党工委书记
  • 习近平会见哥伦比亚总统佩特罗
  • 脑血管支架:救命神器还是定时炸弹?听听医生的大实话
  • 商务部新闻发言人就中美日内瓦经贸会谈联合声明发表谈话
  • 人民日报整版聚焦:专家学者看2025中国经济增长点