我有以下的(貌似無辜的)代碼:爲什麼我不能將一個指針的地址傳遞給一個固定大小的數組,而是將一個指針指向C中的一個指針?
void singleLeftPadZero(char**);
int main() {
char foo[10] = "0";
singleLeftPadZero(foo); // <-- causes warning
singleLeftPadZero(&foo); // <-- same exact warning, but different "note"
}
我從GCC得到警告是:
警告:從不相容 指針類型
過客 'singleLeftZeroPad' 的參數1
而對於第一種情況需要注意的是:
注:應爲「字符**」,但參數的類型「字符*」
的,我明白這意味着我需要一個指針傳遞給一個指針,但我只是路過的指針。因此,我添加了「&」我的說法,這導致了同樣的警告,但這注:
注:應爲「字符**」,但參數的類型爲「CHAR(*)[10]」
我做這看上去好像是固定的,是創建一個額外的變量: char* fooPntr = foo;
然後到該地址傳遞作爲函數參數: singleLeftPadZero(&fooPntr);
但我不知道爲什麼這個作品!
所以一個數組不是一個指針。然後,指向數組的指針不是指向指針的指針。 –