调用函数时,为什么实参中,数组不能指明行列数?

来源:百度知道 编辑:UC知道 时间:2024/06/30 22:55:26
比如:
我调用矩阵相乘的函数时,
写 multiply( a, b); 可以运行出结果,
而 multiply( a[M][N], b[N][Q]); 就不行

一楼也说了,其实它传的是地址。如果按照你的那样的写法,那么它传过去的是数组中的一个指,而且你的那个值还是一个无效的值,因为数组越界了。你如果非要传整个数组的话,你可以把数组封装在一个结构体中,这样就可以了,不过这样做没有必要。

GNU的GCC for C++怎么可以运行呢?
#include <stdio.h>

void asd(int a)
{
printf("%d",a);
}

int main()
{
int a[10][10];
a[0][0] = 10;
asd(a[0][0]);
return 1;
}
输出为10

传的是地址,整个参数表,压入堆栈,太大了,不划算!