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

本文详细解释了C++中指针与引用的区别,并介绍了const、static、extern等关键字的作用及应用场景,帮助读者深入理解这些概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、指针和引用的区别是什么?
     
  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修饰的变量表示该变量的存储随时有可能改变,该变量参与的运算不要进行编译优化。
     
     
     
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值