CsT*_*mas 46 c++ string sizeof
以下代码
#include <iostream>
using namespace std;
int main()
{
const char* const foo = "f";
const char bar[] = "b";
cout << "sizeof(string literal) = " << sizeof( "f" ) << endl;
cout << "sizeof(const char* const) = " << sizeof( foo ) << endl;
cout << "sizeof(const char[]) = " << sizeof( bar ) << endl;
}
Run Code Online (Sandbox Code Playgroud)
输出
sizeof(string literal) = 2
sizeof(const char* const) = 4
sizeof(const char[]) = 2
Run Code Online (Sandbox Code Playgroud)
在32位操作系统上,使用GCC编译.
sizeof计算字符串文字的长度(所需空间)?sizeof?Jon*_*ler 110
sizeof("f") 必须返回2,一个用于'f',一个用于终止'\ 0'.sizeof(foo) 因为foo是指针,所以在32位机器上返回4,在64位机器上返回8sizeof(bar) 返回2因为bar是两个字符的数组,'b'和终止'\ 0'.字符串文字的类型为'char的大小为N的数组',其中N包含终止null.
请记住,传递给数组时,数组不会衰减为指针const char.
Mic*_*kis 13
sizeof返回其操作数的大小(以字节为单位).这应该回答问题编号1.;)此外,传递给字符串文字时,类型为"array to n const char" sizeof.
您的测试用例,一个接一个:
"f"是一个字符串文字,由两个字符组成,即字符f和终止NUL.foo 是一个指针(编辑:无论限定符),并且指针似乎在您的系统上长4个字节.bar这种情况是一样的"f".希望有所帮助.
| 归档时间: |
|
| 查看次数: |
41922 次 |
| 最近记录: |