目录
6. 二级指针
7. 指针数组
例子:访问数组元素指向的空间,并打印出来:
数组与指针的联系:
例1:输出一维数组中的所有元素:
例2:输出二维数组中的所有元素(可以用指针数组模拟出来一个二维数组)
6. 二级指针
二级指针变量是用来存放一级指针变量的地址的。
对一级指针变量和二级指针变量的理解如下:
7. 指针数组
存放指针的数组就是指针数组。
例子:访问数组元素指向的空间,并打印出来:
图解:
代码和运行结果:
int main()
{
int a = 10;
int b = 20;
int c = 30;
//parr就是存放指针的数组,就是指针数组。
int* parr[] = { &a,&b,&c };
int i = 0;
int sz = sizeof(parr) / sizeof(parr[0]);//3
for (i = 0; i < sz; i++)
{
printf("%d ",*parr[i]);
}
return 0;
}
数组与指针的联系:
数组和指针之间通过数组名联系了起来。
其实,[ ] 操作符本质上就是解引用的意思,arr[ i ] 就等于 *(arr+i)
arr[ i ][ j ] 就等于 *(*(arr+i) +j)
数组和指针之间通过数组名联系了起来。
其实,[ ] 操作符本质上就是解引用的意思,arr[ i ] 就等于 *(arr+i)
arr[ i ][ j ] 就等于 *(*(arr+i) +j)
通过下面例子来详细了解。
例1:输出一维数组中的所有元素:
例2:输出二维数组中的所有元素(可以用指针数组模拟出来一个二维数组)
(1)直接创建一个二维数组的做法: 这三种方法都可以
二维数组相当于解引用了两次
解释:
(2)用指针数组模拟出来一个二维数组的做法:
将每个一维数组的数组名取出来,放到一个数组parr中存起来,因为数组名是首元素的地址,所以通过对数组parr的访问,最终就可以找到一维数组中的元素。
int main()
{
int arr1[4] = { 1,2,3,4 };
int arr2[4] = { 2,3,4,5 };
int arr3[4] = { 3,4,5,6 };
int* parr[3] = { arr1,arr2,arr3 };//数组名是首元素的地址
int i = 0;
for (i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 4; j++)
{
printf("%d ",parr[i][j]);
}
printf("n");
}
return 0;
}
图解: (!!!)



