二级指针
二级指针的介绍
在介绍时,我们先介入一段代码
然后我根据代码一图叫你理解二级指针
int main() { int a = 10; int* p = &a; int** pa = &p; return 0; }
一图 KO 二级指针
二级指针的运算
解引用
还是刚刚的代码,我在此基础上添加了解引用操作和打印a值解引用前后信息
操作指令:把原本 a=10 改成 a=6
下图我标明了两代码的区别附加控制台输出
*pa通过对pa中的地址进行解引用,找到pa,*pa访问的是pa;
**pa先通过*pa找到pa,然后对pa进行解引用操作,*pa访问的是pa.
指针数组
概念
是存放指针的数组
指针数组的每个元素是用来存放地址(指针)的
指针数组的每个元素是地址,可以指向同一块区域
指针数组模拟二维数组
为什么叫模拟?
因为指针数组并不是真正的数组,数组是连续存放的
看下图👇
整形指针数组
使用指针数组一次性在控制台打印三个数组的内容
int main() { int a1[4] = { 1,2,3,4 }; int a2[4] = { 5,6,7,8 }; int a3[4] = { 9,10,11,12 }; int* p[3] = { a1,a2,a3 }; int i = 0; for (i = 0; i < 3; i++) { int j = 0; for (j = 0; j < 4; j++) { /*输出方式一*/ printf("%-4d ", p[i][j]); /*输出方式二*/ //printf("%-4d ", *(*(p + i) + j)); } printf("\n"); } return 0; }
控制台输出及代码解释