【发布时间】:2018-01-26 08:10:48
【问题描述】:
在 C 中,
-
是类型限定符,例如
const、volatile、restrict和_Atomic表达式类型的一部分?例如
const int x = 3;x、const int或int的类型是什么? - 函数的类型是否包括其类型限定符 参数?
【问题讨论】:
标签: c function types declaration qualifiers
在 C 中,
是类型限定符,例如 const 、 volatile 、 restrict 和
_Atomic 表达式类型的一部分?
例如
const int x = 3;
x、const int或int的类型是什么?
【问题讨论】:
标签: c function types declaration qualifiers
在 C 标准中有写(6.2.5 类型)
26 到目前为止提到的任何类型都是非限定类型。每个不合格 type 有几个其类型的合格版本,47) 对应于 const、volatile 和 限制限定词。 类型的合格或不合格版本 是属于同一类型类别的不同类型,并且具有 相同的表示和对齐要求....
但是根据函数参数例如这两个声明声明相同的一个函数
void f( const int );
void f( int );
来自 C 标准(6.7.6.3 函数声明符(包括原型))
- ...(在确定类型兼容性和复合类型时, 用函数或数组类型声明的每个参数都被视为 具有调整后的类型和 每个参数声明为合格 类型被视为具有其声明的非限定版本 输入。)
这是一个演示程序
#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 声明其参数。
【讨论】: