我已經遇到了一些代碼,我以爲會被打破,但由於工作的東西,我不明白,或者找到解釋。如果有人能讓我直說,我會非常感激。據證實在下面的代碼片斷:陣列的typedef古怪
#include <stdio.h>
typedef char char_block[16];
void f(char_block *b) {
printf("block 0x%p - b\n", b);
printf("block 0x%p - *b\n", *b);
}
main() {
char_block b = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 };
f(&b);
}
使用克+編譯和執行,此打印:
block 0x0x7fff4794b4e0 - b
block 0x0x7fff4794b4e0 - *b
我曾天真地假定
一個參數的聲明爲「」類型「的陣列」應調整到「」合格指針爲類型「」
意味着該功能將等同於
void f(char ** b)
但是其他的事情正在發生嗎?
該代碼沒有實現一個參數的*聲明,指向]''數組的類型「... *」。 – alk