vik*_*asm 3 c c++ pointers sizeof
在以下代码中:
typedef struct{int data1; int data2} node;
node n1;
node* n2;
sizeof(n1) returns 8 // size of the struct node
sizeof(n2) returns 4 // since n2 is a pointer it returns the size of the pointer
sizeof(*n2) returns 8 // HOW DOES THIS WORK ?
Run Code Online (Sandbox Code Playgroud)
sizeof实际上如何工作?在上面的例子中,*n2归结为提供n2指向的地址.在这种情况下,n2仍然是一个悬空指针,因为我们既没有分配内存,也没有将它指向某个有效地址.它如何正确地给出结构的大小?
Yu *_*Hao 13
你需要了解两件事:
首先,是什么类型的*n2?类型n2是指针node,所以类型*n2是node.
第二,你是对的n2是一个悬空指针,它并没有指向一个有效的地方,但神奇的sizeof是,它是一个编译时运算符(当操作数是一个C99可变长度数组时),sizeof(*n2)被评估为相同的sizeof(node)在编译时.