C/C++一些特殊关键字的作用&指针和引用的区别

来源:互联网 发布:菲律宾程序员招聘骗局 编辑:程序博客网 时间:2024/05/16 08:59
一、指针和引用的区别是什么?
     
  1. 指针是一个变量,它指向一块内存空间;引用是一个变量的别称,只是名字不同而已
  2. 指针可以为空,引用不能为空,且定义的时候必须初始化
  3. 指针初始化后可以改变,但是引用不能改变
  4. const可以修饰指针,但是不能修饰引用
  5. 指针可以有多级,引用只能有一级
  6. sizeof引用,求的是变量的大小,而sizeof指针只是求指针的大小
  7. 指针和引用++的运算意义不一样
  8. 指针和引用在作为参数传递时意义不同,指针作为参数时,实际上也是值传递,只不过传递的是地址,是指针的一份拷贝而已;而传引用时,就是传递变量本身,函数内对引用的操作就是对 原来变量本身的操作

二、浅谈const关键字的作用

注意:C语言中C++中const的作用是不同的,在C语言中const修饰的变量仍然是一个变量,而在C++中修饰的变量变成了常量
     例如在C++中这样的情况是允许的:int n=5; int arr[n];   
     
  1. 在C语言中const修饰的变量,表示这个变量是可读的,不能显示地通过a来修改a的值
  2. const 在‘*’左边表示 常量指针,如 const int* a,或者int const *a; 表示指针指向的变量的值不能被修改
  3. const 在‘*’右边表示 指针常量,如 int *const a; 表示指针指向的地址不能改变;地址空间内的值可以改变

三、static关键字的作用

     在C语言中它有如下几个作用:
  1. 修饰局部变量。  一般来说局部变量都存放在栈上,出了作用域生命周期就结束了,而用static修饰后,它的生命周期会延长到随着文件的结束才结束
  2. 修饰全局变量。  使得该全局变量只能被源文件访问到,其他工程文件即使使用extern也访问不到
  3. 修饰函数。        作用和修饰全局变量相同,都是修改可见性,只能在该源文件内被访问

     在C++中的作用
  1. 修饰类的成员函数。表示该函数是该类所有,而不属于任何该类的特定对象。
  2. 修饰成员函数中的变量。表示该变量是所有该类的对象公有的,该变量在内存中只有一份拷贝,可以通过类和对象去调用。
  3. 对于静态成员函数,只能访问静态变量和静态成员函数,不能访问成员函数和变量
 
四、extern关键字的作用
     在C语言中,extern修饰在变量和函数之前表示该变量和函数是在别的文件中定义的,要在这里引用。如果是在main函数中声明的就只能在main函数中调用,在其它函数不能调用。
     其实调用其他文件的变量和函数要只需要#include+文件名即可,用extern的好处是为了减少编译时间。
     如果C++文件中调用了C的库函数,则要用extern声明,因为C++和C的命名规则不同,这里用来解决名字匹配问题。
    
五、explict关键字的作用
     C++中的explicit只能用于修饰只有一个参数的类构造函数,它的作用是表示该构造函数是显示地不是隐式的
六、volatile关键字的作用
     volatile关键字影响编译器编译的结果,用volatile修饰的变量表示该变量的存储随时有可能改变,该变量参与的运算不要进行编译优化。

     
     
     
       
原创粉丝点击