兩個a
和*a
是指針,因此將其打印在格式化輸出中,如printf()
使用%p
作爲格式說明符。
否則你將得到警告你的編譯器的消息說
warning: format ‘%x’ expects type ‘unsigned int’, but argument 2 has type ‘int (*)[2]’ warning: format ‘%x’ expects type ‘unsigned int’, but argument 2 has type ‘int *’
所以試試這個:
printf("%p\n",a);
printf("%p\n",*a);
對於第三種情況**a
是int
型的,因此最好使用%d
或%i
printf("%d\n",**a);
根據C標準,
ISO c99 standard : 7.19.6 Formatted input/output functions
9 If a conversion specification is invalid, the behavior is undefined.
If any argument is not the correct type for the corresponding conversion
specification, the behavior is undefined.
請更好地解釋你的問題。我只看到代碼是無效的(前兩個'printf'語句)。 –
可能重複的[是數組名稱中的一個指針?](http://stackoverflow.com/questions/1641957/is-array-name-a-pointer-in-c) – WhozCraig