struct指针和内存位置

时间:2018-04-25 15:04:20

标签: c struct

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指针及其内存分配。为什么打印值不同?

2 个答案:

答案 0 :(得分:1)

查看代码,head是一个变量。它是SData结构上的指针的事实对于理解是没有用的:

  • head 返回变量head的值,此处为NULL。
  • & head 返回变量head的地址,这取决于您的编译器和链接器配置。由于head是局部变量,因此它可能是堆栈中某个位置的地址。

答案 1 :(得分:1)

印刷" head"你可以看到它所指向的内存块的地址(NULL),以及打印"& head"你看到内存块的地址,其中" head"存储变量。