在C
中,以下声明之间是否存在差异:
float DoSomething( const float arr[] );
Vs以上。
float DoSomething( const float* arr );
比另一个更优秀吗?
答案 0 :(得分:8)
不,没有任何区别。每当数组作为参数传递给函数时,它就会被衰减为指针。
我认为使用数组语法更清楚一点,它提示它是一个数组而不只是指向一个对象的指针。
在http://www.c-faq.com/aryptr/index.html处有一个非常详细的指针和数组描述。
答案 1 :(得分:1)
由于作为参数传递给函数的数组类型的隐式指针转换,没有区别。
此外,当您在使用数组语法的第一版arr
中使用DoSomething
的值时,arr
的值将在使用时再次隐式转换为指针或者在赋值语句的右侧,或者与[]
数组访问运算符一起使用时。
答案 2 :(得分:0)
每个数组都可以表示为指针,但不每个指针都可以表示为数组。