#include <stdio.h>
/*
指针数组:
一个存储地址的数组。数组内部所有元素都是地址。
指针数组本质,是一个二级指针。
二维数组, 也是一个二级指针。
*/
int main0601(void)
{
int a = 10;
int b = 20;
int c = 30;
int *p1 = &a;
int *p2 = &b;
int *p3 = &c;
int *arr[] = { p1,p2,p3 }; // 整型指针数组arr,保存的是整型地址。
// 数组元素为 整型变量 地址
printf("*(arr[0]) = %d\n", *(arr[0]));// arr[0]=*(arr+0)
printf("*(arr[0]) = %d\n", **arr); // 输出10
return 0;
}
int main0602(void)
{
int a[] = { 10 };
int b[] = { 20 };
int c[] = { 30 };
int *arr[] = { a,b,c }; // 整型指针数组arr,保存的是整型地址。
// 数组元素为 数组 地址。
printf("*(arr[0]) = %d\n", *(arr[0]));// arr[0][0]=*(*(arr+0)+0)=**arr
return 0;
}
/*
多级指针:
int a = 0;
int *p = &a; 一级指针是 变量的地址。
int **pp = &p; 二级指针是 一级指针的地址。
int ***ppp = &pp; 三级指针是 二级指针的地址。
int ****pppp = &ppp; 四级指针是 三级指针的地址。
......
多级指针,不能 跳跃定义!
对应关系:
ppp == &pp; 三级指针
*ppp == pp == &p; 二级指针
**ppp == *pp == p == &a 一级指针
***ppp == **pp == *p == a 普通整型变量
*/
int main0603(void)
{
int a = 10;
int *p = &a;
int **pp = &p; // int **pp = &(&a)是不允许的。
int ***ppp = &pp;
printf("***ppp = %d\n", ***ppp );// 10
printf("**pp = %d\n", **pp);// 10
printf("*p = %d\n", *p);// 10
return 0;
}
12 C语言基础--------指针数组、多级指针
最新推荐文章于 2024-08-24 14:01:36 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)