参照问题在哪里声明可以在存储类说明放在哪里? 我开始分析的概念declaration-specifiers
和declarators
。 以下是我的理解积累。
声明
- 一般来说,
C
声明遵循的语法declaration-specifiers declarators;
-
declaration-specifiers
包括type-specifiers
, storage-class-specifiers
和type-qualifiers
-
declarators
可以是变量,指针,功能和阵列等。
我认为规则
-
declaration-specifiers
可以以任何顺序被指定,作为一个例子 - 不能有多单
storage-class-specifier
- 在另一方面,可以有多个
type-qualifiers
-
storage-class-specifier
不得与去declarator
问题
Q1:在恒定的指针的声明,我看到的混合declarator
和type-qualifier
如下
const int *const ptr; //Need justification for the mix of declarator and type-specifier
Q2:可以有一个指向static int
。 有没有提供指针的可能性static
存储类? 意味着指针是静态的。
我不知道我完全理解你的第一个问题。 在C ++ 03语法方面const
是cv-qualifier
。 cv-qualifier
可以存在于decl-specifier-seq
(作为特定种类的type-specifier
),这是声明的“共同”的一部分,以及在init-declarator-list
,这是一个以逗号分隔个人说明符的序列。
语法是专门制定了一个const
属于个人指针声明符说明符必须遵循 *
。 一个const
先于第一说明符*
不考虑个人声明符的一部分。 这意味着,在这个例子中
int const *a, *b;
const
属于左侧: decl-specifier-seq
,声明的“共同”的一部分。 即两个a
和b
声明为int const *
。 同时此
int *a, const *b;
简直是病态的,并不会编译。
你的第二个问题看起来并不清楚,我要么。 看来,你得到它倒退。 你声称“可以有一个指向static int
”? 没有,有没有方法来声明这样的事情为“指针static int
”。 你可以声明一个静态指针int
虽然
static int *p;
在这种情况下指针本身是静态的,因为你希望它是。
Q2:可以有一个指向静态INT。 有没有提供指针的静态存储类的可能性? 意味着指针是静态的。
嗯,是:
static T *a;
声明a
指针T
。 a
具有静态存储时间。
一般来说,C“声明”是这样的声明,说明符声明符;
这里,“声明-说明符”包括类型说明符,存储类-符和类型限定符。
“说明符”可以是变量,指针,功能和阵列等。
类似的错误: - 之前字符串常量这种类型的错误[错误]预计声明符或“...”来了,原因是它在声明的问题。