如何使用一个变量来定义一个数组(矩阵)的大小在C?

k5ifujac  于 2023-08-03  发布在  其他
关注(0)|答案(3)|浏览(132)

我刚刚开始学习C(我有非常基本的JS知识),我试图创建一个数组,它将容纳“X”个值:

#include <stdio.h>

int main(void){

// Instead of doing this:

float numGrades[4][4] = {}

return 0;
}

个字符

esbemjvw

esbemjvw1#

你的两次尝试都是在做同样的事情,而且都是无效的。您试图定义一个float变量,并使用无效的表达式对其进行初始化。也不能重新定义变量grades
你在做这个:

int students = 4;
int grades = 4;
float grades = [students][grades] = {};

字符串
编译器应该会告诉你如下内容:

error: conflicting types for 'grades'; have 'float'
     float grades = [students][grades] = {};
           ^~~~~~

note: previous definition of 'grades' with type 'int'
     int grades = 4;
         ^~~~~~

error: expected expression before '[' token
     float grades = [students][grades] = {};
                    ^


通过为维度和数组选择不同的名称,并修复定义(删除虚假的额外=),问题得到了解决。

int num_students = 4;
int num_grades = 4;
float grades[num_students][num_grades] = {};

hkmswyz6

hkmswyz62#

正如评论者指出的那样,你试图将其中一个变量重新定义为其他变量。变量需要有唯一的名字(在一个范围内。如果你不知道这是什么意思,那就坚持“变量需要唯一的名称”)。正如评论者指出的那样,变量名应该尽可能具有描述性。试试这个:

#include <stdio.h>

int main(void)
{
    int num_students = 4;
    int num_grades = 4;
    float student_grades[num_students][num_grades];

    for (int i = 0; i < num_students; ++i) {
        for (int j = 0; j < num_grades; ++j) {
            student_grades[i][j] = 3.14;
        }
    }

    for (int i = 0; i < num_students; ++i) {
        for (int j = 0; j < num_grades; ++j) {
            printf(" %f", student_grades[i][j]);
        }
        putchar('\n');
    }

    return 0;
}

字符串

ipakzgxi

ipakzgxi3#

int main() {
    int numStudents = 4;
    int numGrades = 4;
    float numGrades[sizeof(numStudents)][sizeof(numGrades)] = {};
    return 0;
}

字符串

相关问题