c++中的几个常用关键字

一、static关键字用途太多,以致于让新手模糊。不过,总结起来就有两种作用,改变生命期限制作用域。如:
l         
修饰inline函数:限制作用域
l         
修饰普通函数:限制作用域,

 l        修饰全局变量:限制作用域

不能被其他文件使用,像全局变量,全局函数如果没有加上static,则可以同过extern ,被其他的文件调用

1.   #include<iostream>  

2.   using namespace std;  

3.     

4.   void fn();  

5.   static int n;  //定义静态全局变量  

6.     

7.   int main(void)  

8.   {  

9.       n = 20;  

10.      cout<<n<<endl;  

11.      fn();  

12.      return 0;  

13.  }  

14.    

15.  //File2  

16.  #include<iostream>  

17.  using namespace std;  

18.    

19.  extern int n;  

20.    

21.  void fn()  

22.  {  

23.      n++;  

24.      cout<<n<<endl;  

编译并运行这个程序,您就会发现上述代码可以分别通过编译,但运行时出现错误。试着将static  int n 改为int n则可以通过运行。
l        
修饰局部变量:改变生命期

默认初试化为0.

#include <stdio.h>

int a;

int main()

{

int i;

     staticchar str[10];

    printf("integer: %d; string:(begin)%s(end)", a, str);

     return0;

}

程序的运行结果是:

integer: 0; string: (begin) (end)

 

最后对static的三条作用做一句话总结。首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0.
二、const关键字倒是比较明了,用const修饰的变量表明修饰的内容不能更改。在rodata里,字符串默认就是常量。对const,注意以下几点就行了。
指针常量:指向的数据是常量。如 const char* p = “abc”; p指向的内容是常量,但p本身不是常量,你可以让p再指向”123”。

常量指针:指针本身是常量。如:char* const p = “abc”; p本身就是常量,你不能让p再指向”123”。

指针常量 + 常量指针:指针和指针指向的数据都是常量。const char* const p=”abc”; 两者都是常量,不能再修改。
C++
中const有什么用?

不要一听到const就说是常量,这样给考官一种在和一个外行交谈的感觉。应该说const修饰的内容不可改变就行了,定义常量只是一种使用方式而已,还有const数据成员,const参数, const返回值, const成员函数等, 被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。

C与C++各自是如何定义常量的?有什么不同?

C中是使用宏#define定义, C++使用更好的const来定义。
区别:

1)const是有数据类型的常量,而宏常量没有,编译器可以对前者进行静态类型安全检查,对后者仅是字符替换没有类型安全检查,而且在字符替换时可能会产生意料不到的错误(边际效应)。

2)有些编译器可以对const常量进行调试,不能对宏调试。
既然C++中有更好的const为什么还要使用宏?

const无法代替宏作为卫哨来防止文件的重复包含


三、violatile关键字通常用来修饰多线程共享的全局变量和IO内存。告诉编译器,不要把此类变量优化到寄存器中,每次都要老老实实的从内存中读取,因为它们随时都可能变化。这个关键字可能比较生僻,但千万不要忘了它,否则一个错误让你调试好几天也得不到一点线索。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值