我认为下面会给我 10 个易失性整数
volatile int foo[10];
但是,我不认为以下内容会做同样的事情。
volatile int* foo;
foo = malloc(sizeof(int)*10);
如果我对此以及如何使用 malloc 拥有易失性项目数组有误,请纠正我。
Thanks.
int volatile * foo;
从右向左读“foo 是一个指向 volatile int 的指针”
因此,无论您通过 foo 访问什么 int,该 int 都将是易失性的。
P.S.
int * volatile foo; // "foo is a volatile pointer to an int"
!=
volatile int * foo; // foo is a pointer to an int, volatile
意味着 foo 是不稳定的。第二种情况实际上只是一般从右到左规则的遗留。
要吸取的教训是养成使用的习惯
char const * foo;
而不是更常见的
const char * foo;
如果你想要更复杂的东西,比如“指向函数的指针返回指向 int 的指针”,那么它才有意义。
P.S.,这是一个大问题(也是我添加答案的主要原因):
我注意到您将“多线程”作为标签包含在内。您是否意识到 volatile 对于多线程几乎没有什么好处?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)