为什么在C+;中sizeof()函数的工作方式存在一些歧义+;,使用struct时 struct节点 { int数据; 结构节点*下一步; } C++中的CUT< P>,一个类类型声明为结构{{/*BLAH-BAHLA-BAH*/};或A类{/*blah blah blah*/}可以在后面称为类型class a或struct a或简称a。这些类型可以传递到sizeof操作符中

为什么在C+;中sizeof()函数的工作方式存在一些歧义+;,使用struct时 struct节点 { int数据; 结构节点*下一步; } C++中的CUT< P>,一个类类型声明为结构{{/*BLAH-BAHLA-BAH*/};或A类{/*blah blah blah*/}可以在后面称为类型class a或struct a或简称a。这些类型可以传递到sizeof操作符中,c++,C++,变量也可以传递到sizeof运算符中,如下所示: int a; cout<<sizeof(int) <<sizeof(a) <<endl;//there is no error here //BUT cout<<sizeof(int a) <<endl;//this throws an error 类似地,涉及类类型的声明不能放入sizeof运算符: int a; long b; node c; std::cout <

变量也可以传递到
sizeof
运算符中,如下所示:

int a;
cout<<sizeof(int) <<sizeof(a) <<endl;//there is no error here

  //BUT

cout<<sizeof(int a) <<endl;//this throws an error 
类似地,涉及类类型的声明不能放入
sizeof
运算符:

int a;
long b;
node c;

std::cout << sizeof(a) << ' ' << sizeof(b) << ' ' << sizeof(node) << '\n';
std::cout << sizeof(int a); // Compile error

std::难道你没有做同样的事情吗?sizeof(node)是如何工作的?这不应该是个错误吗。只有这样的节点才真正有用,除非我使用了一些typedef,而我没有使用它。@Qrious Try
sizeof(struct node node\u instance)
。这和你用
int
做的事情更相似:谁说的@是的,我明白你的意思。但我的问题主要是理解sizeof(node)如何在没有任何错误的情况下工作。“节点”本身没有意义,对吗?我没有声明任何node类型的变量。如果我使用struct node node1声明了node类型的变量,并使用了sizeof(node1),我知道这是正确的用法。但是仅仅使用sizeof(node)应该是错误的。明白了,谢谢!感谢@雷内也指出了C++中的一个类类型:声明为<代码>结构< < />代码>或<代码>类A<代码> + 100。祝贺您发布了正确的概念: Stult声明C++中的类类型。
std::cout << sizeof(int a); // Compile error
std::cout << sizeof(node c); // Compile error