tru*_*rue 2 c++ casting sizeof
为什么函数sizeof在struct自身使用时不会返回相同的大小?
因为我正在努力的winsock程序,我需要抛出它.谢谢你的帮助,真的.
#include <iostream>
#include <string>
using namespace std;
struct stringstruct
{
string s1;
string s2;
};
int main()
{
stringstruct ss = {"123","abc"};
char *NX = (char*)&ss;
cout << sizeof(NX) << endl << sizeof(*NX) << endl;
cout << sizeof(&ss) << endl << sizeof(ss) << endl;
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上面的例子输出
4
1
4
64
Run Code Online (Sandbox Code Playgroud)
sizeof会告诉你给定表达式类型的大小.在sizeof(NX)和sizeof(&ss),结果是4,因为你的机器上的指针占用4个字节.因为sizeof(*NX),你正在取消引用a char*,它给你一个char,char占用1个字节(并且总是这样),所以你得到输出1.当你这样做时sizeof(ss),ss是a stringstruct,所以你得到a的大小stringstruct,这似乎是64个字节.