C int*和int[]之间的实际区别是什么?

C int*和int[]之间的实际区别是什么?,c,pointers,C,Pointers,可能重复: 我将int*变量传递给一个定义为func(int-var[])的函数,编译器抱怨从不兼容的指针类型传入参数。有什么区别,或者根本没有区别?函数声明R foo(T[])和R foo(T*)对于所有类型T都是相同的 你的错误在别的地方 (您可以使用指向T的指针或-Ts数组的名称调用foo,因为后者在调用过程中会衰减为合适的指针。) 示例: void foo(int *); void bar(int[]); void example(int * a) { int n = 10;

可能重复:


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

函数声明
R foo(T[])
R foo(T*)
对于所有类型
T
都是相同的

你的错误在别的地方

(您可以使用指向
T
的指针或-
T
s数组的名称调用
foo
,因为后者在调用过程中会衰减为合适的指针。)

示例:

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);
}