今天看STL源码分析看到的一句话:obj * volatile *my_free_list ;
首先我们要明白一件事:volatile是一个特征修饰符(type specifier). volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。 volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。
这是百度百科的叙述。
我们再来看语法:当我们正常设置一个指针的时候:void *p;
我们知道,void是返回值类型,*可以看作指针的一个标志,p是指针的变量名,p的值是一个地址,也就是说我们以后一定可以通过这个void *p得到一个地址;
再来对比obj * volatile *my_free_list ;我们可以将其看作:obj * (volatile *my_free_list) ;
进一步来看volatile *my_free_list;这是不是和void *p没什么两样了呢?
而通过volatile *my_free_list我们也一定可以得到一个地址,是不是感觉和p很相似呢?
那么也就是说:
void * p
obj * ( volatile *my_free_list)
最后提一句,C++的指针采取右结合
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)