关于数组类型的讨论
对于下面帖子10#翅膀兄弟的论述,我做了一个实验:https://bbs.bccn.net/thread-213259-1-1.html
实验结论:运算符[]和指针*等价。
要指向一个N维数组,就要定义一个指向N-1维的数组的指针(当然不是绝对,这里限定指针的移动是一维的)
示例见代码:
#include "stdio.h"
int main()
{
char a[2][3][4];
char (*pa)[3][4]; //要指向三维数组,要定义指向二维数组的指针来指向
char b[3][4];
char (*pb)[4]; //要指向二维数组,要定义指向一维数组的指针来指向
char c[4];
char (*pc); //要指向一维数组,要定义普通指针来指向
pa = a; //这里的三个赋值语句,都编译通过,没有类型不匹配的报错
pb = b;
pc = c; //左边:char * 右边:char[]
return 0;
}
int main()
{
char a[2][3][4];
char (*pa)[3][4]; //要指向三维数组,要定义指向二维数组的指针来指向
char b[3][4];
char (*pb)[4]; //要指向二维数组,要定义指向一维数组的指针来指向
char c[4];
char (*pc); //要指向一维数组,要定义普通指针来指向
pa = a; //这里的三个赋值语句,都编译通过,没有类型不匹配的报错
pb = b;
pc = c; //左边:char * 右边:char[]
return 0;
}
由此可以看出,char * 和 char[]的类型是匹配的。
这个想法刚刚产生,欢迎一起讨论,寻找内涵。