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。