struct node
{
int data;
struct node *next;
}
cout<<sizeof(struct node)<<sizeof(node)<<endl;
//no error, C++ allows us to use sizeof(struct node) and sizeof(node) both.
而我们不能对int数据类型
做同样的事情int a;
cout<<sizeof(int) <<sizeof(a) <<endl;//there is no error here
//BUT
cout<<sizeof(int a) <<endl;//this throws an error
我理解“struct node”本身就像一个数据类型,可用于声明“struct node”类型的变量。通过sizeof()如何使用int的行为,可以理解sizeof(struct node)等同于sizeof(datatype),因此是正确的用法。
但是sizeof(节点)如何工作呢?它不会抛出任何错误。 “node”本身不能用于声明任何其他变量,它需要是“struct node”来声明变量。
答案 0 :(得分:5)
在C ++中,声明为struct A {/* blah blah blah */};
或class A {/* blah blah blah*/};
的类类型可以稍后称为class A
或struct A
或简称A
。这些类型可以传递给sizeof
运算符。
变量也可以传递到sizeof
运算符,如下所示:
int a;
long b;
node c;
std::cout << sizeof(a) << ' ' << sizeof(b) << ' ' << sizeof(node) << '\n';
但是int a
之类的变量声明无法放入sizeof
运算符中:
std::cout << sizeof(int a); // Compile error
同样,涉及类类型的声明不能放入sizeof
运算符:
std::cout << sizeof(node c); // Compile error