C

指向同一地址的指针间的关系

2019-06-11  本文已影响0人  SnC_

这是一个懂的人觉得简单,但是不清楚的话很容易引发错误的知识点。

先说结论:指针自身的内容互相无关。但指针指向的内容,指针间共用。

测试例子1:
typedef struct LinkNode{
    int data;
    struct LinkNode *next;
}Node;

int main (void){
    Node *a = (Node*)malloc(sizeof(Node));
    Node *b = (Node*)malloc(sizeof(Node));
    Node *c = (Node*)malloc(sizeof(Node));
    Node *i = a;

    a->data = 1;
    b->data = 2;
    c->data = 3;
    a->next = b;
    i->next = c;
    printf("%d",a->next->data); //output : 3
    return 0;
}

指针a和i都指向同一结构体。结构体最终的next指向c,所以输出为3。

测试例子2
typedef struct LinkNode{
    int data;
    struct LinkNode *next;
}Node;

int main (void){
    Node *a = (Node*)malloc(sizeof(Node));
    Node *i = a;

    a->data = 1;
    a = NULL;
    printf("%d",i->data); //Output : 1
    return 0;
}

a与i的内容互相无关。

上一篇下一篇

猜你喜欢

热点阅读