首页 > 解决方案 > 为什么 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

标签: c++stringsizeofstrlen

解决方案


为什么 sizeof(str) 等于 8

因为 的类型strconst char *指向 的指针const char,而您系统上的指针大小恰好是 8 个字节。

当它应该等于 strlen(str)+1 ...</p>

不,不应该,因为该数字不是sizeof运算符返回的类型的大小。


推荐阅读