这是一个采访问题:
int []
和int*
之间有什么区别,所有这些都是函数的输入参数。
f(int a[] , int* b)
我的回答:
对于f()
,它们具有相同的功能。第一个是a[]
中第一个元素的起始位置。
第二个指向int
。
但是,如何在不传递其他论据的情况下将它们相互区分?
答案 0 :(得分:12)
作为函数参数,两种类型完全相同,int []
被重写为int *
,您无法区分它们。 StackOverflow中的许多问题涵盖了这个主题,c-faq甚至在指针和数组上都有special section(作为参数与否)。看一看。
答案 1 :(得分:6)
在函数参数的上下文中,它们是相同的。以下所有完全相同:
f(int a[], int *b)
f(int a[], int b[])
f(int *a, int *b)
f(int *a, int b[])
如果不传递一些额外信息,就无法区分它们。