23.C语言指针相关知识点2
C语言指针相关知识点3
- 6.23二级指针的认知
- 6.24二级指针实战
- 6.25二级指针要注意的地方
- 6.26指针完结
6.23二级指针的认知
-
代码
#include <stdio.h>int main(){int data = 100;int *p = &data;printf("data的地址:%p\n",&data);printf("p保存data地址:%p,内容:%d\n",p,*p);printf("p的地址:%p\n",&p);printf("==========================\n");int **p2;p2 = &p;printf("p2保存p的地址:%p\n",p2);printf("*p2是%p\n",*p2);printf("**p2来访问data:%d\n",**p2);printf("==========================\n");int ***p3;p3 = &p2;printf("p3保存p2的地址:%p\n",p3);printf("*p2是%p\n",*p3);printf("**p2来访问data:%d\n",***p3);return 0; }
6.24二级指针实战
-
#include <stdio.h>void getperson(int pos,int (*pstu)[4],int **ppos){*ppos = (int *)(pstu + pos);}int main(){int scores[3][4] = {{55,66,77,88},{66,55,99,100},{11,22,33,59},}; int *ppos;int pos;printf("请输入学生号:0,1,2\n");scanf("%d",&pos);getperson(pos,scores,&ppos);for(int i = 0;i<4;i++){printf("%d ",*ppos++);}return 0; }
6.25二级指针要注意的地方
-
二级指针不能简单粗暴指向二维数组
-
//这段代码不能成功运行,只是作为例子进行演示 #include <stdio.h>int main(){int scores[3][4] = {{55,66,77,88},{66,55,99,100},{11,22,33,59},}; //int (*p)[4]int **p;p = scores;printf("*p=%p\n",*p);//*p是一个野指针//不是我们所认为的会编程列地址return 0; }
6.26指针完结
-
总结