int 和int *之间的区别作为函数参数
这是一个面试问题:
int []
和int*
之间有什么区别,它们都是函数的输入参数。
f(int a[] , int* b)
我的回答:
对于f()
,它们具有相同的function。 第一个是a[]
第一个元素的起始位置。
第二个指向一个int
。
但是,如何在不传递其他论据的情况下将它们彼此区分开来?
作为函数参数,两种类型完全相同, int []
被重写为int *
,您无法区分它们。 StackOverflow中的许多问题都涵盖了这个主题,而c-faq甚至还有一个关于指针和数组的特殊部分 (作为参数与否)。 看看吧。
在函数参数的上下文中,它们是相同的。 以下所有内容完全相同 :
f(int a[], int *b) f(int a[], int b[]) f(int *a, int *b) f(int *a, int b[])
如果不传递一些额外信息,您无法区分它们。