目录
前言
1.二级指针
2.指针数组
3.指针数组模拟二维数组
前言
Hello,小伙伴们我又来了,上期我们讲到了数组名的理解,指针与数组的关系等知识,那今天我们就继续深入到学习指针域数组的练联系,如果喜欢作者菌生产的内容还望不要忘了点赞,关注,评论。好了,废话不多说,要是想要更加深入的学习,也可以观看作者菌往期的文章哦。
1.二级指针
指针变量也是变量,是变量就有地址,那指针变量的地址存放在哪⾥?
像这样的写法就是二级指针:即用来存放一级指针的地址。
对于二级指针的运算有:
*ppa 通过对ppa中的地址进⾏解引⽤,这样找到的是 pa , *ppa 其实访问的就是 pa .
int a = 20;
*pa = &a;// 等价于 pa = &b;
**ppa 先通过 *ppa 找到 pa ,然后对 pa 进⾏解引⽤操作: *pa ,那找到的是 a
**ppa = 30;
// 等价于 *pa = 30;
// 等价于 a = 30;
2.指针数组
指针数组是指针还是数组?
我们类⽐⼀下,整型数组,是存放整型的数组,字符数组是存放字符的数组。
那指针数组呢?是存放指针的数组。
指针数组的每一个元素都是用来存放指针的。
如图:
指针数组的每一个元素是地址,又可以指向一块区域。
3.指针数组模拟二维数组
#include <stdio.h>
int main()
{
int arr1[] = {1,2,3,4,5};
int arr2[] = {2,3,4,5,6};
int arr3[] = {3,4,5,6,7};
//数组名是数组⾸元素的地址,类型是int*的,就可以存放在parr数组中
int* parr[3] = {arr1, arr2, arr3};
int i = 0;
int j = 0;
for(i=0; i<3; i++)
{
for(j=0; j<5; j++)
{
printf("%d ", parr[i][j]);
}
printf("\n");
}
return 0;
}
parr[i]是访问的parr的元素,parr[i]找到的数组元素的指向整形一维数组,parr[i][j】就是一维数组中的元素 。
上述的代码模拟出⼆维数组的效果,实际上并⾮完全是⼆维数组,因为每⼀⾏并⾮是连续的
好,今天的分享就到这里,咱们下次再见,拜拜!!