#include<bits/stdc++.h>
using namespace std;
typedef struct _id{
int a;
}id,*idd;
int main() {
id* x,*y,*z,*k;
x = (idd)malloc(sizeof(struct _id));
y = (idd)malloc(sizeof(_id));
z = (idd)malloc(sizeof(id));
k = (idd)malloc(sizeof(idd*));
cout<<sizeof(x)<<sizeof(y)<<sizeof(z)<<sizeof(k);
}
请问大家sizeof后面写的这四个参数是一个意思吗
id是一个结构体 idd是结构体指针 _id是一个标识符
后面写这四个都是可以的嘛 为什么最后结果都是8呀
注意几个知识点:
1:sizeof求得是啥,他的参数怎么传递
2:关于结构体的定义,以及结构体的表示方法,struct是可以省略的,以及结构体指针和一个对象的表示方法
3:要知道指针的概念,指针和地址的关系,而计算机对指针,也就是存地址的变量,都是4字节大小
因为你是64位计算机,sizeof计算任何指针的大小都是int的大小,所以都是8,与指针是哪种类型没有关系
在这个程序里,idd是一个结构体指针类型的别名。在对x,y,z,k赋值的代码都有一个(idd),指将数据类型强制转换为idd类型,即指针类型。指针类型在32位机上占4个字节,64位机占8个字节。所以在64位机上sizeof(x),sizeof(y),sizeof(z),sizeof(k)都是8