首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >易失性指针指向易失性焦。附加静态关键字

易失性指针指向易失性焦。附加静态关键字
EN

Stack Overflow用户
提问于 2016-06-30 06:27:06
回答 2查看 1.3K关注 0票数 1

我对C语法有一个小问题。我知道这篇文章

代码语言:javascript
复制
volatile char * volatile foo;

创建到易失性字符的易失性指针变量。

在我的理解中,第一个易失性意味着指针指向一个易失性元素,因为部分“易失性焦”。第二个易失性表示指针"foo“本身是易失性的。

这个假设正确吗?

什么将是

代码语言:javascript
复制
static volatile char * volatile bar;

做?

假设上面的语句是正确的,它应该声明一个指向volatile+static字符的易失性指针。我的问题是,指针不需要知道目标变量是否是静态的。因此,这可能声明了一个指向易失性字符的static+volatile指针。

但是,假设这是正确的,第一个易失性将引用指针,第二个将引用指向的数据。

哪个是正确的假设?每种挥发性物质都会做些什么?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-30 06:45:40

在我的理解中,第一个易失性意味着指针指向一个易失性元素,因为部分“易失性焦”。第二个易失性表示指针"foo“本身是易失性的。这个假设正确吗?

是。左边的每个类型限定符(volatile和/或const和/或restrict)都指向指向类型,而右侧的每个类型限定符都指向指针类型本身。这只适用于类型限定符。

static (以及extern、auto等)是存储类说明符,只涉及可变的持续时间和范围。它们总是引用声明的变量类型本身,在本例中是指针。声明指向数据的存储类说明符是没有意义的,因为该数据不是在该行上声明的,而是在另一行声明的。

还要注意的是,您总是可以声明一个指针变量,它的类型限定符比指向类型多,但不能用更少的类型来声明。在实现const正确性时,这一点很重要。

票数 2
EN

Stack Overflow用户

发布于 2016-06-30 06:41:03

因此,这可能声明了一个指向易失性字符的static+volatile指针。

当然,是的。

但是,假设这是正确的,第一个易失性将引用指针,第二个将指向指向

不是的。static只是意味着bar是静态的。这和不稳定没有任何关系。因此,例如,static char * volatile bar是易失性静态指针,而static volatile char *bar是指向易失性字符的静态指针。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38115439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档