如果之前询问过,我很抱歉 - 我无法找到它。C矩阵尺寸不同于声明
这只是一个奇怪的错误,我不明白哪些实用性很少(如果有的话)。下面是代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void print_matrix(int a[4][3], int i, int j)
{
printf("a[%d][%d] = %d\n", i, j, a[i][j]);
return;
}
int main(void)
{
int i, j;
int array[3][5];
for (i = 0; i < 3; i++)
{
for(j = 0; j < 5; j++)
{
scanf("%d",&(array[i][j]));
}
}
printf("array[2][1] = %d\n", array[2][1]);
print_matrix(array, 2, 1);
printf("array[0][4] = %d\n", array[0][4]);
print_matrix(array, 0, 4);
return 0;
}
我声明的大小的矩阵[3] [5],但是当我在另一个函数使用这个矩阵,并用尺寸称之为[4] [3],则返回奇怪的结果。有人可以解释在这种情况下访问内存的方式吗?
你的编译器应该警告你。编译启用所有警告。 –
只需将该函数更改为void void print_matrix(int x,int y,int a [x] [y])'。请注意,C不允许大小为零的数组。 – Lundin