C问题 - 使用[]而不是*?

时间:2011-07-24 20:33:47

标签: c

C中,以下声明之间是否存在差异:

float DoSomething( const float arr[] );

Vs以上。

float DoSomething( const float* arr );

比另一个更优秀吗?

3 个答案:

答案 0 :(得分:8)

不,没有任何区别。每当数组作为参数传递给函数时,它就会被衰减为指针。

我认为使用数组语法更清楚一点,它提示它是一个数组而不只是指向一个对象的指针。

http://www.c-faq.com/aryptr/index.html处有一个非常详细的指针和数组描述。

答案 1 :(得分:1)

由于作为参数传递给函数的数组类型的隐式指针转换,没有区别。

此外,当您在使用数组语法的第一版arr中使用DoSomething的值时,arr的值将在使用时再次隐式转换为指针或者在赋值语句的右侧,或者与[]数组访问运算符一起使用时。

答案 2 :(得分:0)

每个数组都可以表示为指针,但每个指针都可以表示为数组。