指向数组的指针
int a[10];
一定有书上说a和&a是等价的,其实不完全对。
a的类型:int[10]
&a的类型:int(*)[10]
只不过二者能够隐式转换,甚至能与int*匹配。但在VS中会报警告。
返回数组的函数
C语言中,数组并不是一个数据类型,函数是不能返回数组的,只能返回数组指针。
严谨来讲,返回数组a的函数应该这样写:
int(*ReturnA())[10]
{
return &a;
}
但往往我们偷懒,写成这样:
int* ReturnA()
{
return a;
}
这里面做了多次隐式类型转换:
int[10] -> int(*)[10] -> int*
返回多维数组的函数
对于一个三维数组
int a[10][10][10];
最严谨的写法:
int(*Return())[10][10][10]
{
return &a;
}