陣列我在我的節目一個警告,它說:C編程: '和' 用在scanf
format '%c' expects argument of type 'char *' , but argument 2 has type 'char (*)[10]' [-Wformat]
這是我的計劃:
#include<stdio.h>
int main()
{
char array[10];
scanf("%10c", &array);
printf("%.10s", array);
return 0;
}
的當我從scanf中刪除'&'時警告消失。 我知道,這是一個數組,不需要&。但是,它們不一樣嗎? 我的意思是'&數組'和'數組'給它的第一個元素的地址,對吧? 如果是這樣,這裏有什麼區別?
我在這裏閱讀了一些相關的問題,並且搜索了很多。 有人說'&數組'是一個指向字符數組的指針,如果'數組'是一個數組而'數組'本身是一個指向字符的指針。 根據它所說的,因爲我使用%c,我認爲應該傳遞一個指向字符數組的指針。 Idk,如果有人解釋%[width] c是如何工作的,我會非常感激。
我還驗證了所有'array','& array'和'& array [0]'給出了它的第一個元素的地址。 這裏就是我所做的:
int main()
{
char array[10];
puts("ADDRESS:");
printf(" %p \n %p \n %p", array, &array, &array[0]);
return 0;
}
如果他們都給予相同的地址,它爲什麼給人這樣的警告? 它也適用於%s。 它們在大多數Windows編譯器中都可以正常工作,沒有任何警告。
由於我是一個Windows用戶,我以前從未使用過gcc編譯器。我在想的是,只要不是像函數指針那樣編寫&。 你不一定要寫&與函數指針,我讀。
我越來越困惑,請幫我弄明白。
謝謝。
@ruakh 感謝編輯。 – 1lastBr3ath