我有以下的(貌似无辜的)代码:为什么我不能将一个指针的地址传递给一个固定大小的数组,而是将一个指针指向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);
但我不知道为什么这个作品!
所以一个数组不是一个指针。然后,指向数组的指针不是指向指针的指针。 –