int []和int *之间的区别作为函数参数

时间:2011-12-08 00:38:12

标签: c++ c function pointers arguments

这是一个采访问题:

int []int*之间有什么区别,所有这些都是函数的输入参数。

f(int a[] , int* b)

我的回答:

对于f(),它们具有相同的功能。第一个是a[]中第一个元素的起始位置。

第二个指向int

但是,如何在不传递其他论据的情况下将它们相互区分?

2 个答案:

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

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