1

可能重复:
数组名称是 C 中的指针吗?

我将一个int *变量传递给一个定义为的函数,func(int var[])编译器抱怨从不兼容的指针类型传入参数。有什么区别,或者根本没有区别?

4

1 回答 1

2

所有类型的函数声明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);
}
于 2012-11-29T22:12:01.510 回答