有任何不懂的问题可以评论区留言,能力范围内都会一一回答
1.指针数组,是数组,但是它的元素都是指针。
#define _CRT_SECURE_NO_WARNING
#include <stdio.h>
int main(void) {
int a = 3;
int b = 4;
int c = 5;
int* arr[3] = { &a,&b,&c };
printf("%d\n%d\n%d\n", *arr[0], *arr[1], * arr[2]);
return 0;
}
我么可以通过对指针数组简引用得到指针数组元素所指向的值
但这可能听起来很无趣
于是我们也有另一种有趣的用法
那就是用指针数组去模拟二维数组
#define _CRT_SECURE_NO_WARNING
#include <stdio.h>
int main(void){
int arr1[5] = { 1,2,3,4,5};
int arr2[5] = { 2,3,4,5,6};
int arr3[5] = { 3,4,5,6,7};
int* arr[] = { &arr1,&arr2,&arr3 };
for (int i = 0; i < 3; i++)
{
for (int j = 0; j <5; j++)
{
printf("%d\n", *(*(arr + i) + j));
}
}
return 0;
}
以上图片来自于比特鹏哥
这个地方是指针数组,只要数组元素是地址即可,也可以是数组的地址或者是指针的地址,这个地方我们把几个维数组的地址放到一个指针数组中可以模拟二维数组
当然各位有兴趣也可以去试试用指针数组模拟三维数组可不可以。
2.数组指针,数组指针,是指向数组的指针,是指针
表示形式
#define _CRT_SECURE_NO_WARNING
#include <stdio.h>
int main(void) {
int arr[4] = { 1,2,3,4 };
int(*p)[4] = &arr;
printf("%d",*(*p+1));
return 0;
以上就是数组指针的用法,括号内的*p说明是p是一个指针,去掉括号的部分是int [4]说明p指针指向的类型是int[4](也就是数组)
p的类型就是把p去掉剩下的,也就是int(*)[4]
本质上指针数组和数组指针这个知识点单独并不是很难,总的知识点基本就这些了
后面会将指针的知识点一起出几期每日好题,你就会知道什么是痛苦了