这是一个懂的人觉得简单,但是不清楚的话很容易引发错误的知识点。
先说结论:指针自身的内容互相无关。但指针指向的内容,指针间共用。
测试例子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的内容互相无关。
网友评论