急问一个在函数内定义数组的简单问题 谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/07 20:58:40
我在一个函数如int a(int b)内定义了一个数组,double a[N][M],接着给数组a赋值,后来发现数组a赋值失败,请问为什么?如何解决?
难道在函数内不能直接定义数组并赋值吗?是不是要用malloc或者new,如果不能,为什么不能呢?
谢谢
简化下:
#include <stdio.h>
void fox()
{
int i=2,j=2,u,v;
double As[i][j];
for(u=0;u<i;u++)
for(v=0;v<j;v++)
As[u][v]=u*v;
printf("As[1][1]=%d\n",As[1][1]);
}
int main()
{
fox();
return 0;
}

在函数中是可以定义数组的,但必须是已知大小,如果定义double a[N][M],则N,M必须是常整数(无法改变其值的量),另外,在赋值时也要注意:定义过后的语句只能一个一个赋值,比如:
double a[2][3];
a = {0,0,0,1,1,1,2,2,2};
这样的赋值是错误的,你只能
a[0][1] = 0;
...

当然,你的赋值不可以赋给像a[2][0]这样的不属于数组的元素