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