我正在尝试编写一个动态分配的数组的基本固定大小数组(当我们只知道2D数组的一个维时),并获取矩阵的用户输入。
我了解到,在声明动态分配的2D矩阵之后,您可以像访问固定长度的2D数组一样对其进行访问。 因此,我尝试使用scanf为动态分配的2D数组获取用户输入,就像我对固定长度的2D数组所做的一样。
对于固定长度的2D数组,我做到了并且有效:
long bar[3][3];
printf("input 9 elements: ");
for (r = 0; r < 3; r += 1) {
for (c = 0; c < 3; c += 1) {
scanf("%ld", &bar[r][c]);
}
}
但是当我对动态分配的数组的固定大小的数组执行此操作时:
long *buckets[3], no_of_cols, no_of_rows, c;
printf("number of elements in each cols: ");
scanf("%ld", &no_of_cols);
for (no_of_rows = 0; no_of_rows < 3; no_of_rows += 1) {
buckets[no_of_rows] = calloc( no_of_cols, sizeof(long));
}
long m = no_of_cols * 3;
printf("input %ld elements: ", m);
for (no_of_rows = 0; no_of_rows < 3; no_of_rows += 1) {
for(c = 0; c < no_of_cols; c += 1) {
scanf("%ld" &buckets[no_of_rows][c]);
}
}
我希望程序将用户输入写入阵列存储桶。但是当我运行该程序时,出现了此错误:
error: invalid operands to binary expression
('char *' and 'long')
scanf("%ld" &buckets[no_of_rows][c]);
我不明白我为动态分配的2D数组做错了什么导致了此错误。请帮助我。