把数组作为参数时,一般不指定数组第一维的大小,即使指定,也会被忽略。为什么呢?解决办法

把数组作为参数时,一般不指定数组第一维的大小,即使指定,也会被忽略。为什么呢?
把数组作为参数时,一般不指定数组第一维的大小,即使指定,也会被忽略。为什么呢?
还是C++教材上的原话。
原因是?

------解决方案--------------------
因为本质上数组名是作为指针传进去的, 所以大小被忽略
------解决方案--------------------
void func(int a[10]) {}
比如说这样一个函数,数组传参是以首地址的方式传入,a[10]的首地址就是&a[0],也就是a;
上面的写法和 void func(int* a){},是一样的
如果是二维数组 void func(int a[20][10]) {} 写法与 void func(int a[][10]) {} 或者
void func(int* a[10])或者 void func(int **a)都是一样的。这里传入的也只是二维数组的首地址
只不过编译器不支持 void func(int a[][])的写法。
数组作为参数传入,大小最好作为另一个参数传入 比如 void func(int a[],int size);
------解决方案--------------------
探讨
把数组作为参数时,一般不指定数组第一维的大小,即使指定,也会被忽略。为什么呢?
还是C++教材上的原话。
原因是?

------解决方案--------------------
因为是把数组名当做指针传递进去的,所以数组的大小是不被注意的。这也是容易出错的原因。
如果你想编译是能够注意到数组大小,可以用引用。即如果传递的是数组的运用,那么编译器就不会忽略数组的大小了。