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

use*_*288 4 c c++ pointers arguments function

这是一个面试问题:

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

f(int a[] , int* b)
Run Code Online (Sandbox Code Playgroud)

我的答案:

因为f(),它们具有相同的功能.第一个是第一个元素的起始位置a[].

第二个指向一个int.

但是,如何在不传递其他论据的情况下将它们彼此区分开来?

sid*_*yll 12

作为函数参数,这两种类型完全相同,int []被重写为int *,并且您无法区分它们.StackOverflow中的许多问题涵盖了这个主题,而c-faq甚至还有一个关于指针和数组的特殊部分(作为参数与否).看看吧.

  • +1:正确,虽然没有任何价值,但这并不意味着数组和指针是相同的_ (2认同)

Oli*_*rth 6

在函数参数的上下文中,它们是相同的.以下所有内容完全相同:

f(int a[], int *b)
f(int a[], int b[])
f(int *a, int *b)
f(int *a, int b[])
Run Code Online (Sandbox Code Playgroud)

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