#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>int main() {
//指针数组:存放指针的数组
int arr1[] = {1,2,3};
int arr2[] = {2,3,4};
int arr3[] = {3,4,5};
int* arr4[] = {arr1,arr2,arr3};
//通过arr4打印arr1\arr2\arr3
for (int i=0;i<3;i++)
{
for (int j=0;j<3;j++)
{
printf("%d", *(arr4[i] + j));
}
printf("\n");
}
int* p = NULL;//p:整型指针,指向整型的指针,可以存放整形的地址。
char* pc = NULL;//pc:字符指针,指向字符的指针,可以存放字符的地址
int arr5[5] = {1,2,3,4,5};
int(*pa)[5] = &arr5;//pa:数组指针,指向数组的指针,可以存放数组的地址。
//char* arr[5];//arr:指针数组
//char* (*pa)[5] = &arr;//存放指针数组的地址,本质上是存放数组的地址,存放数组的地址需要用数组指针+每个元素类型为char*,即为所求:char*(*pa)[5]
int arr6[5] = {1,2,3,4,5};
int (*p6)[5]= &arr6;
//for循环通过p6访问arr6每个元素//method 1
for (int i = 0; i < 5; i++)
{
printf("%d\n", (*p6)[i]);
/*
p6是数组指针的名字,保存着arr6的地址,*p6解引用找到arr6的首地址存的内容,
*/
}
//还可以这样使用
//method 2
for (int i=0;i<5;i++)
{
printf("%d\n", *(*p6 + i));//同上*p6找到arr6的首地址,*p6+i,实现分别找到后面五位的地址,再解引用实现每个地址中数组的内容找到。}
//最正常 method3
p = arr6;
for (int i = 0; i < 5; i++)
{
printf("%d\n", *(p + i));
}return 0;
}
怎么使用呢?