如果之前詢問過,我很抱歉 - 我無法找到它。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