谁能帮忙解答一下啊

来源:百度知道 编辑:UC知道 时间:2024/09/22 07:14:44
#include<stdio.h>
#include<stdlib.h>
#define NULL 0
typedef struct qnode
{
int data;
struct qnode *next;
}*queueptr;
main()
{
int j,k,*i;
j=sizeof(struct qnode);
k=sizeof(queueptr);
printf("%d %d",j,k);
}
得到的答案是 8,4 j的值是8我还能理解 但是为什么queueptr的值是4呢?我认为他也应该是8才对啊 因为他是qnode的指针难道不应该占8个空间么?

是这样的

前一个我就不说了 因为struct的空间大小就是那么多

第二个: 你定义了一个指针 你测试的是你的指针的大小 并不是只想内容的大小
也就是说你定义了*p 你前一种的意思是sizeof(*p)

但是后一种呢 是sizeof(p)

明白了吗? p放的是一个地址 地址的空间是多少呢? 一般机器是4 好象有的是2 的 但是可以确定的是 如果你上面的那个是8 那么它就应该是4 了

指针本身的大小:这个大小跟编译器及编译模式有关。vc下都是4个字节。
和它指向的变量的大小无关。