可能重复:
数组名称是 C 中的指针吗?
我将一个int *
变量传递给一个定义为的函数,func(int var[])
编译器抱怨从不兼容的指针类型传入参数。有什么区别,或者根本没有区别?
可能重复:
数组名称是 C 中的指针吗?
我将一个int *
变量传递给一个定义为的函数,func(int var[])
编译器抱怨从不兼容的指针类型传入参数。有什么区别,或者根本没有区别?
所有类型的函数声明R foo(T[])
和R foo(T *)
都是相同的T
。
你的错误在别处。
(您可以foo
使用指向 a 的指针T
或使用 s 数组的名称进行调用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);
}