【发布时间】:2012-01-15 12:27:39
【问题描述】:
这是一道面试题:
int [] 和int* 有什么区别,它们都是函数的输入参数。
f(int a[] , int* b)
我的答案:
对于f(),它们具有相同的功能。第一个是a[]中第一个元素的开始位置。
第二个指向int。
但是,如何在不传递其他参数的情况下区分它们?
【问题讨论】:
-
您说的“将它们彼此区分开来”是什么意思,这很不清楚。
-
我想我对这个问题的理解与 Oli 有点不同 - 你能澄清一下吗?
-
¤ 作为正式参数,声明
int a[]衰减 到int* b指针,例如int a[13],它只衰减为int* b指针(丢弃数组大小)。同样,作为形式参数,声明int foo( double )衰减为int (*foo)(double)指针。直接使用指针语法更强大一些,因为它允许const/volatile限定参数(注意:写int* const a而不是仅仅int* a不会影响函数签名,因为顶级@ 987654337@ 的形式参数不影响签名)。干杯&hth.,
标签: c++ c function pointers arguments