一个简单的指针指向问题的讨论

来源:互联网 发布:知乎怎么公共编辑问题 编辑:程序博客网 时间:2024/05/16 03:20
#include<stdio.h>#include<stdlib.h>#include<math.h>typedef struct node{int data;struct node * next;}Link;int main(void){Link l[3];//建立三个结点,分别存储1,2,3和自己的地址 for(int i=0;i<3;i++){l[i].data = i+1;l[i].next = l+i;}//输出指向地址的data,输出为1,2,3 for(int i=0;i<3;i++){printf("%d ",l[i].next->data);}putchar('\n');//交换l[0]和l[2]的位置数组从升序变为降序 Link temp = l[0];l[0] = l[2];l[2] = temp;//依然输出指向地址的data,得到1,2,3而非3,2,1 for(int i=0;i<3;i++){printf("%d ",l[i].next->data);}//结论:指针的指向是绝对的,不会因结点物理位置的移动而改变//不要想当然地以为只向自己的指针永远指向自己//指针真正指向的只是地址,而非数据集合 return 0;}

0 0
原创粉丝点击