2015-04-01 45 views
0

我試圖訪問一個多維數組的單行。但是,我不斷收到以下錯誤消息: 格式指定類型'int',但參數的類型爲'int *'。 我認爲這是說有一個數組的特定格式;如果不是%i,我使用什麼符號訪問它們?C什麼%符號來訪問數組?

#include <stdio.h> 

int main(void) { 

    int matrix1[5][4] = 
     {{1,2,3,4}, 
     {5,6,7,8}, 
     {9,10,11,12}, 
     {13,14,15,16}, 
     {17,18,19,20}}; 

    printf ("%i",matrix1[0]); 


    return 0; 
} 
+2

你想訪問哪個元素? – 2015-04-01 18:36:18

回答

3

您正在訪問的陣列將被轉換爲類型int *這是你的編譯器的消息的原因的第一行。

如果你要打印的整行可以用

int i; 
for (i = 0 ; i < 4 ; ++i) 
    printf("%d ", matrix1[0][i]); 
    /*      ^another index to specify an integer from the array */ 
printf("\n"); 

嘗試,如果你只是想在第一行和陣列的第一列試

printf("%d\n", matrix1[0][0]); 
1

我認爲它在說有一個陣列的特定格式

這是說你正在嘗試使用%i,用於打印單個整數。沒有直接打印陣列的格式,您必須提供圍繞%i格式的自己的膠水。

換句話說,打印一排,你必須使用類似:

printf ("%i %i %i %i", matrix1[0][0], matrix1[0][1], matrix1[0][2], matrix1[0][3]); 
0

我使用如果不是%i訪問他們什麼符號?

printf函數族沒有格式說明符來打印數組。格式說明符僅支持寫入基本數據類型 - char,int等。完整列表可以使用man printf,網址爲http://en.cppreference.com/w/c/io/fprintf和Web上的許多其他資源來找到。

要編寫數組中的所有元素,您需要使用循環遍歷項並逐個寫入每個元素,例如@iharob's answer中的代碼。