概念:指针数组是数组用来存放指针
-
指针类型的数组,首先是数组,数组元素存储的都是指针
-
数组名在表达式中会转换为数组首元素的首地址
-
对数组名使用sizeof关键字或对数组名取地址 &数组名 不会转换首元素的首地
代码示例1:
#include <stdio.h>
int main()
{
int arr[10]={0}; //整型数组
char ch[5]={0};//字符数组
int *parr[4]; //存放整型指针的数组-指针数组 其中parr代表首元素地址
char *pch[5];存放字符指针的数组--指针数组 pch代表首元素地址
}
代码示例2:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int arr1[7] = { 1,2,3,4,5,6,7 };
int arr2[7] = { 8,9,10,11,12,13,14 };
int arr3[7] = { 15,16,17,18,19,20,21};
int* arr[3] = { arr1,arr2,arr3 }; //代表各数组的首元素地址
int i = 0;
for (i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 7; j++)
{
printf("%d",*(arr[i] + j) );
//arr[i]代表(arr1 arr2 arr3的首元素地址)+j代表表示指针打印该行的第几列
//也就是j个int型的步长
}
printf("\n");
}
}
int* arr1[10];//整形指针的数组
char *arr2[4];//一级字符指针的数组
char **arr3[5];//二级字符指针的数组