C/C++零碎知识整理(二)

1、寄存器变量

 寄存器变量是存放在寄存器中的,使用关键字register来定义,寄存器变量只能定义在函数中,不能用取地址符“&”来操作,因为它在寄存器中,不在内存中,因此没有地址,寄存器变量数量是有限制的,超过限制的变量自动转为自动变量。其优点是速度快。

2、volatile

volatile表示的是变化的,异变的。

告诉编译器不要去假设这个变量的值,每次使用的时候要重新读取这个变量的值。 一般在嵌入式的开发中比较常见,或者在多线程中比较常见。

 1 int i = 0;
 2 void fun(LPVOID p)
 3 {
 4     i = 3;
 5     cout<<"fun"<<endl;
 6 }
 7 int _tmain(int argc, _TCHAR* argv[])
 8 {
 9      HANDLE hThread = CreateThread(
10            NULL, // default security attributes
11              0, // use default stack size
12                fun, // thread function
13                  NULL, // argument to thread function
14                    0, // use default creation flags
15                      &dwThreadId[i]); // returns the thread identifier
16 
17      i = 2;
18      while(i == 2)
19      {
20 
21      }
22      cout<<"main"<<endl;
23 }

这里打印的结果将是

fun

不会出现“main”,因为编译器将代码进行了优化,

while(i == 2)优化成了while(1),结果变成了死循环。

如果给i加上volatile,就不会出现这种情况。

3、怎么样将指针指向某一个地址

int * ppn=0;
ppn = (int *) 0x577a80 ;

 

4、const volatile char* p = “aaa”;

上面标示的是指针p指向的内容是个定值,是只读的,不能发生变化的,但是volatile又标示他是易变的,不能保证它不会被意外的改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值