请教下C语言高手,程序老是报错 `a' was not declared in this scope...
发布网友
发布时间:2024-10-02 08:54
我来回答
共5个回答
热心网友
时间:2024-11-11 08:49
自动数组的长度必须是个常数,而a和b是个变量,所以是不允许的
改了下:
#include<stdio.h>
#include<stdlib.h>
#define SIZE1 3
#define SIZE2 5
void mul(int a, int b, double arr[][SIZE2]);
void echo(int a,int b,double arr[][SIZE2]);
int main(void)
{
double one[SIZE1][SIZE2] =
{
{1.1,2.2,3.3,4.4,5.5},
{6.6,7.7,8.8,9.9,10.10},
{11.11,12.12,13.13,14.14,15.15}
};
echo(SIZE1, SIZE2, one);
mul(SIZE1, SIZE2, one);
echo(SIZE1, SIZE2, one);
system("pause");
return 0;
}
void mul(int a, int b, double arr[][SIZE2])
{
int i,n;
for(i = 0;i < a;i++)
{
for(n = 0;n < b;n++)
arr[i][n] *= 2;
};
}
void echo(int a, int b, double arr[][SIZE2])
{
int i,n;
for(i = 0;i < a;i++)
{
printf("\n[%d]\n",i);
for(n = 0;n < b;n++)
printf("%7lg",arr[i][n]);
};
}
热心网友
时间:2024-11-11 08:50
void mul(int a, int b, double arr[a][b]);的定义里,double arr[a][b],是错的,这里不能用a ,b
热心网友
时间:2024-11-11 08:47
数组传参,传的是首地址。只要传2个参数,1个是数组名(char *)和另一个是数组长度(int)。当然,多维数组传多个数组长度(int)。
热心网友
时间:2024-11-11 08:46
void mul(int a, int b, double arr[a][b]);的定义里,double arr[a][b],是错的,这里不能用a ,b
热心网友
时间:2024-11-11 08:50
经我用devcpp测试发现应该定义成
void mul(int a, int b, double arr[][SIZE2])
void echo(int a,int b,double arr[][SIZE2])
你写的不是变长数组,因为你用的SIZE1 和SIZE2是宏,宏在预处理的时候都会被换成原本的。也就是说:预处理后,SIZE1变成了3,SIZE2变成了5,这些可以在预处理后的代码里看到。