volatile修饰符和函数指针 --c++学习笔记

volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素(操作系统、硬件、其它线程等)更改。所以使用 volatile 告诉编译器不应对这样的对象进行优化。

对于线程共享的变量应该设置为volatile,不然编译器优化,会将该变量放入寄存器中,每次从寄存器中读取数据,导致获得不了该值已经改变。

======================================
函数指针变量和函数指针类型的区别:

 /**
  * @brief
  * 定义了一个变量pFun,这个变量是个指针,指向返回值为空和参数为int的函数的指针!
  */
 void (*pFun)(int);//变量

 /**
  * @brief 代表一种新类型,不是变量!所以与上述的pFun不一样!
  */
 typedef void (*func)(void);//类型,注意区分意思

 void myfunc(void) { cout << "asda" << endl; }

 void glFun(int a) { cout << a << endl; }
 int main() {
     func pfun = myfunc; /*赋值*/
     pfun();             /*调用*/
     pFun = glFun;
     (*pFun)(2);
 }

github参考内容

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值