在C中,
是类型限定符,例如const
,volatile
,restrict
和
_Atomic
表达式的一部分?
例如
const int x = 3;
x
,const int
或int
的类型是什么?
答案 0 :(得分:9)
在C标准中有书面(6.2.5类型)
26到目前为止提到的任何类型都是不合格的类型。每个不合格 type有几个类型的限定版本,47)对应 const,volatile和的一个,两个或全部三个的组合 限制限定符。 类型的合格或非限定版本 是属于同一类型类别且具有的不同类型 相同的表示和对齐要求....
但是根据函数参数,例如这两个声明声明了相同的一个函数
void f( const int );
void f( int );
来自C标准(6.7.6.3函数声明符(包括原型))
- ...(在确定类型兼容性和复合类型时, 使用函数或数组类型声明的每个参数都被视为 具有调整后的类型和使用qualified声明的每个参数 type被视为具有其声明的非限定版本 输入即可。)
醇>
这是一个示范程序
#include <stdio.h>
void f( const int );
int main(void)
{
int x = 10;
f( x );
return 0;
}
void f( int x )
{
printf( "The argument is %d\n", x );
}
它的输出是
The argument is 10
考虑到函数的定义可以取决于它的参数是用限定符const
声明还是没有它。