struct Data
{
int num;
struct *next, *prev;
};
typedef struct Data sData;
int main()
{
sData *head;
head = NULL;
printf("%lld %lld", head, &head);
return 0;
}
我试图更深入地了解struct指针及其内存分配。为什么打印值不同?
答案 0 :(得分:1)
查看代码,head
是一个变量。它是SData
结构上的指针的事实对于理解是没有用的:
head
的值,此处为NULL。head
的地址,这取决于您的编译器和链接器配置。由于head
是局部变量,因此它可能是堆栈中某个位置的地址。答案 1 :(得分:1)
印刷" head"你可以看到它所指向的内存块的地址(NULL),以及打印"& head"你看到内存块的地址,其中" head"存储变量。