指向同一结构体的3个指针为什么他们指向的地址不同?

dev编译器编译显示3个不同地址
vc++编译显示3个相同地址
按理说是3个相同的地址吧?

代码如下:

#include <stdio.h>
main()
{
    typedef struct Node{
        int a;
        struct Node* next;
    }Node;    
    Node * pt2;    
    Node * pt1;    
    Node * pt3;

    printf("%p ", pt1);
    printf("%p ", pt2);
    printf("%p", pt3);
}

没有初始化,一切皆有可能

你只是定义了3个同类型结构体指针,并没有让它们指向同一个结构体,你理解有误吧。

Node * pt2; 意为创建一个结构体指针,pt2,pt3也是结构体指针,并且它们都没有初始化值,野指针。因此它们的值不相同。

Node obj;
pt2 = &obj;
pt2 = &obj;
此时它们的地址相同。