【发布时间】:2020-04-25 22:32:24
【问题描述】:
如何将数字保存在二维数组中?为什么这段代码不起作用?
void input_arr(int *arr, int n, int m);
void print_arr(int *arr, int n, int m);
int main()
{
int *arr;
int n, m;
printf("Insert line of array: ");
scanf("%d", &n);
printf("Insert column of array: ");
scanf("%d", &m);
arr = calloc(n * m, sizeof(int));
input_arr(arr, n, m);
return 0;
}
void input_arr(int *arr, int n, int m)
{
int i;
int j;
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
printf("Insert element in line %d and column %d: ", i, j);
scanf("%d", (&arr[i][j]));
}
}
}
void print_arr(int *arr, int n, int m)
{
int i, j;
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
printf("%d ", *arr[i][j]);
}
}
}
【问题讨论】:
-
请显示调用该函数的代码。 stackoverflow.com/help/minimal-reproducible-example
-
那是因为
int *arr不是代表二维数组的类型(甚至不是表现得像二维数组的东西)。您实际上是在将二维数组传递给函数吗?请提供minimal verifiable example。另外,请定义“不起作用” - 编译错误?碰撞?不正确的价值观?什么? -
@Boninissimo 对我来说该功能有效!:) 看来您使用该功能不正确。
-
@VladfromMoscow 该功能不能工作,至少不能以定义的行为工作。他在单级指针上使用双索引 [i][j]。
-
@DarkAtom 还有什么?他可以对这样的数组使用运算符。没问题!
标签: c arrays multidimensional-array