我有以下C代码示例:
int f(const int farg[const 5])
{
}
数组大小的附加const有什么作用?当我在那里省略const时有什么区别?
答案 0 :(得分:13)
int d(const int darg[5])
方法darg
是指向const
int
的指针。
int e(int earg[const 5])
方法earg
是指向const
的{{1}}指针。这是一个c99功能。 int
在参数声明中等同于T A[qualifier-list e]
。
当然(从上面):
T * qualifier-list A
方式int f(const int farg[const 5])
是指向farg
const
的{{1}}指针。
答案 1 :(得分:1)
数组大小的附加const有什么作用?
C11:6.7.6.3:
参数声明为' type ''的数组应调整为''指向 type '的合格指针,其中类型限定符(如果有)是在数组类型派生的
[
和]
中指定的类型限定符。
这意味着
int f(const int farg[const 5])
将调整为
int f(const int *const farg)
当我省略const时有什么区别?
省略后,相当于
int f(const int frag[5]) //or int f(const int frag[])
最终相当于
int f(const int *farg)