一個維陣列作爲函數參數:
#include <stdio.h>
#include <string.h>
int func(int a[], int n)
{
int i;
for(i = 0; i < n; i++)
printf("%d ", a[i][j]);
}
int main(void)
{
int a[2] = {1,2};
func(a, 2);
}
它編譯並正確運行。
但是,當一個二維陣列作爲函數參數:
#include <stdio.h>
#include <string.h>
int func(int a[][], int n)
{
int i, j;
for(i = 0; i < n; i++)
for(j = 0 ; j < n; j++)
printf("%d ", a[i][j]);
printf("\n");
}
int main(void)
{
int a[2][2] = {{1,2}, {3,4}};
func(a, 2);
}
它不能正確編譯。我必須這樣修改代碼:
#include <stdio.h>
#include <string.h>
int func(int a[][2], int n)
{
int i, j;
for(i = 0; i < n; i++)
for(j = 0 ; j < n; j++)
printf("%d ", a[i][j]);
printf("\n");
}
int main(void)
{
int a[2][2] = {{1,2}, {3,4}};
func(a, 2);
}
我不知道爲什麼?任何人都可以解釋它是如何工作的?非常感謝。
'int a []'然後'a [i] [j]' - 地球上的這種編譯是否正確? – 2013-01-01 17:02:18
此問題不是「如何在C++中使用數組」的重複。無論如何,這個問題非常廣泛(如此糟糕的表述)。這個問題更具體(儘管需要對英文正確性進行一些編輯)。而且,儘管在這個問題中涉及到的一些內容與C++相關,但它們通常專用於C++,而這個問題應該僅限於C並且面向C語言。如果這是關於SO的另一個問題的重複,那麼讓我們在這裏列出正確的一個。 – labyrinth