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[]) 

如果不传递一些额外信息,您无法区分它们。