Arrays 1D阵列-->;二维或多维数组代码

Arrays 1D阵列-->;二维或多维数组代码,arrays,c,data-structures,Arrays,C,Data Structures,在最后3行换行之前,整个代码都是正常的,但是我想检查是否有一种方法可以正确地编写它 完整代码: float mat_add(float A[],float B[],float C[]); { x=0, y=0; int row_num,colm_num,chk_row,chk_colm; do { fflush(stdout); printf("PLEASE! choose Array 'A' Rank (maximum 4x

在最后3行换行之前,整个代码都是正常的,但是我想检查是否有一种方法可以正确地编写它

完整代码:

    float mat_add(float A[],float B[],float C[]);
{
     x=0, y=0;

  int row_num,colm_num,chk_row,chk_colm;

do
{
        fflush(stdout);

        printf("PLEASE! choose Array 'A' Rank (maximum 4x4)==>\n\n");
        sleep(1);
        printf(" \a 'A' rows=  ");
        chk_row =scanf("%i", &row_num);


       printf("  'A' columns=  ");
       chk_colm =scanf("%i", &colm_num);

        if( chk_row!=1||chk_colm!=1||row_num>4 || row_num<0|| colm_num>4 || colm_num<0) //restrictions for user input
{
        printf("\n \a Failure!!---->  Your Array Rank is not accepted !!.");
        sleep(1);
        printf("\n \n -----PLEASE!----- re-input your values ==>\n\n");
}

        sleep(2);
}while(  chk_row!=1||chk_colm!=1|| row_num>4 || row_num<0||  colm_num>4 || colm_num<0); //restrictions for user input
x=row_num ;
y=colm_num;
A[]=A[x][y];

printf("\n\n\t \a Success!!---> Array 'A' set to rank = %ix%i i.e. (A[%i][%i]). \n\n",row_num,colm_num,row_num,colm_num);
float mat_添加(float A[],float B[],float C[]);
{
x=0,y=0;
int row_num,colm_num,chk_row,chk_colm;
做
{
fflush(stdout);
printf(“请!选择数组'A'秩(最大4x4)=>\n\n”);
睡眠(1);
printf(“\a'a'行=”);
chk_row=scanf(“%i”和row_num);
printf(“'A'列=”);
chk_colm=scanf(“%i”和&colm_num);
如果(chk|U row!=1 | chk|U colm!=1 | row|U num>4 | row|U num4 | colm|num4 | row|num4 | colm|num我可以这样做吗?[]=A[2][3]

签名:

float mat_add(float A[],float B[],float C[]);
传入指向三个数组的指针。因此,在调用此函数之前,数组的维度必须已经固定

您尚未将声明发布到这些数组,因此我们无法知道(正如所写的,代码也无法知道)这些数组的维度

所以当代码说:

A[]=A[x][y];
无法知道索引
X
Y
是否在这些数组的范围内

表达的这一部分:

A[]
将数组的地址作为目标(L值),并将数组
A[2][3]
中条目的内容分配给???A[0][0]

这不是一个安全的分配。除其他问题外,如果没有(数组中至少有3行和4列),该怎么办

此外,编译器不知道数组的每一行中有多少列,因此编译器不知道通过内存索引访问每一行的距离(超出
0
行)

结果是未定义的行为

建议将签名更改为:

float mat_add( int rows, int columns, float A[ rows ][ columns ], etc ;

然后,在使用
x
y
之前,检查这些(用户输入的)变量是否大于0,对于
x
,请提供一个最小的、可重复的示例,请参见。我可以这样做吗?例如,a[]=a[2][3]吗?这是我问题的80%,感谢您的回答。不要大声喊叫-这会让人恼火。我会这样做的,ty1先生)是的,我已经限制了y,x,在我将它们分配给数组之前,我要求用户分配“x”和“y”值,也就是y,我发布了稍长的代码sry。2)同样是为了这个问题:数组必须具有固定的大小和尺寸。因此,如果我在函数原型中声明它们,我可以离开原型吗[e ash this==>fun(empty)?然后在以后需要在函数体中声明数组时?