1.指针数组
定义:首先是一个数组,而数组的元素是指针,也就是说,如果数组元素都是相同类型的指针,则称这个数组为指针数组。指针数组本质是数组,存放的元素是指针。(参考百度)
数组指针的形式
举个例子:
#include <stdio.h> int main() { int arr[10] = { 0 };//整形数组 char ch[5] = { 0 };//字符数组 int* parr[4]; //存放整形指针的数组 -指针数组 char* pch[4]; //存放字符指针的数组 -指针数组 return 0; }
指针数组的用途
答:将指针存入数组统一管理,之后我们再去使用时就不用再去寻找其位置,给个例子抛砖引玉。
//例子 #include <stdio.h> int main() { int a = 1; int b = 2; int c = 3; int d = 4; int* parr[4] = { &a,&b,&c,&d };//将4个整形地址存入 //打印数组 int i = 0; for (i = 0; i < 4; i++) { printf("%d ", *(parr[i]); } return 0; }
2.数组指针
定义:指的是数组名的指针,即数组首元素地址的指针。即是指向数组的指针。数组指针本质是指针,指针指向的是数组。
仍然以例子来解释数组指针的形式
#include <stdio.h> int main() { int* p = NULL; //整形指针-存放整形的地址 char* ch = NULL; //字符指针-存放字符的地址 int (*parr)[5] = NULL; //数组指针-存放数组的地址 return 0; }
3.数组指针和指针数组加深汇总
给出这两个类型和两个类型组合的例子
int arr[5]; //arr是一个5个元素的整形数组-整形数组 int* parr1[10]; //parr1是一个数组,有十个元素,每个元素类型是整形指针-指针数组 int (*parr2)[10]; //parr2是一个指针,指针指向一个数组,数组中有十个元素,每个元素是整形-数组指针 int(*parr3[10])[5];//parr3是一个数组,该数组有十个元素,每个元素类型是一个数组指针, //每个数组指针指向的数组有五个元素,每个元素类型是整形