我将int *
变量传递给定义为func(int var[])
的函数,并且编译器抱怨从不兼容的指针类型传入参数。有什么区别,或者根本没有区别?
答案 0 :(得分:2)
所有类型R foo(T[])
的函数声明R foo(T *)
和T
都是相同的。
您的错误位于其他地方。
(您可以使用指向foo
的指针或使用T
数组的名称来调用T
,因为后者在指向期间衰减为合适的指针调用。)
示例:强>
void foo(int *);
void bar(int[]);
void example(int * a)
{
int n = 10;
int p[] = { 1, 2, 3 };
foo(a); bar(a);
foo(p); bar(p); // all those are OK
foo(&n); bar(&n);
}