【发布时间】:2013-07-18 21:06:54
【问题描述】:
在声明的情况下;
const int *p;
说明符const 应用于int,即对象p 指向。
而关于声明(1998 年 6 月,嵌入式系统编程);
一些声明说明符对 declarator-id 的类型没有贡献。相反,它们指定直接应用于 declarator-id 的其他语义信息。例如,在:
static unsigned long int *x[N];
关键字
static不适用于x中的指针指向的unsigned long int对象。相反,它适用于x本身:
---------------------------
/ \ / \
static unsigned long int * x [N];
这声明
x是一个静态对象,类型为“指向无符号长整型指针的N 个元素的数组”。
我不明白为什么static 应用于x?
【问题讨论】:
-
您能想象将
static应用于unsigned long int*而不是x?如果答案是“否”,那么顺序无关紧要,因为static和const是两个不同的东西。const的情况不同:const int* p与int* const p不同。 -
您希望它应用于什么?
-
变量
x具有数组类型(这是unsigned long *[n]部分,更准确地说是n指向unsigned long 指针的数组。但是static与类型无关: 它表示x的存储类(其他是extern、auto和register)。如果你觉得这本书不清楚,你可能想阅读其他书籍(似乎不清楚对我也是),参见例如stackoverflow.com/questions/562303/… -
@AlexandreC。是的,你是对的。抱歉问了这么愚蠢的问题。
-
@AlexandreC.;是的。这就是为什么我很困惑。但现在很清楚了。
标签: c pointers qualifiers