定义这样的函数时:
void myFunction(arguments){
// some instructions
}
使用type name[]
和type *name
作为函数的参数之间的差异是什么。
使用type name[]
并调用该函数时,它会复制到name
数组或只指向传递的数组。
是否需要设置name
数组的下标。如果没有区别的话。
答案 0 :(得分:1)
无论哪种方式只传递一个指针。
void f(int array[]);
与传递const指针
同义void f( int * const array);
当传递带边界的二维数组
时,它们变为非同义词void f(int array[][n]);
是
的同义词void f(int (* const array)[n]);
但不同到
void f(int **array);
答案 1 :(得分:1)
我的知识没有区别,在这种情况下实际上是一个问题:
int func(int a[20]) {
sizeof(a); // equals sizeof(int*)!!
}
因此我总是喜欢指针形式,因为数组形式会引起微妙的混淆。
答案 2 :(得分:-2)
在C ++中它是一样的。声明不同;
char *s = "String"; // allocated and fill
char str[80]; // allocated memory
char *p1; // not allocated memory
p1 = str;