11.1指针数组的概念
1.C语言的数组,嘛类型都能装,如果一个数组装的全都是指针,那我们就叫他是指针数组。
定义的一般格式: 类型名 *数组名【数组长度】
比如说 char *color[5],这就是一个名叫color的指针数组,里面放了5个指针。
里面的元素,比如color[3]就是一个指针,指向一个字符串,color[3]就是该字符串的首地址,可以用语句
printf
来输出color[i]所指向的字符串。语句
printf
2.指向指针的指针(二级指针)
一般定义为 类型名 **变量名。
int
3.二维数组的指针形式
int
这样我们可以把二维数组看成是三个一维数组组成(a[i])的一维数组。
a为a[0]的地址,a=&a[0];
a+i为a[i]的地址,加为框地址。
而a[0]是a[0][0]的地址,也就是说a[0]=&a[0][0]
hence, a=&&a[0][0];
a为行元素数组的首地址,又被称为是行地址,是二级指针。*a是首行第一个元素的地址,又称为列地址,是一级指针。
具体看下面:
4.指针数组与二级指针
指针数组名也是二级指针,比如说char *color[5],这样,我们color就是一个二级指针,
我们可以撸一串代码
#include
记住,对于一个指针,想表达成字符串,可以用str等字符数组的数组名来表示。
5.指针数组与二维数组
如果要处理多个字符串,通常使用二维字符数组或者指针数组。
char
上面是二维数组,下面是指针数组。
两个框子就是二维数组,一个框子是指针数组,定义二维字符数组的时候一定要指定列长度。
用指针数组进行操作的例子:
#include
6.动态分配多个字符串
color
7.指针作为函数的返回值
除了整型,字符型,浮点型等基本类型,函数的返回值还可以是指针类型
char
char *XX就是字符指针
8.指向函数的指针
int (*funptr)(int,int)定义了一个函数指针funptr,它可以指向有两个整型参数且返回值类型为int的函数。
假设函数fun(x,y)已经定义,两个整型参数且返回一个整型量
funptr=fun;
那么fun(3,5)=(*funptr)(3,5)
例题:
#include