C:关键字,你到C++里就变了
来源:互联网 发布:编程模拟蚂蚁寻找甜品 编辑:程序博客网 时间:2024/05/01 20:30
1.const: C语言中,被const关键字修饰的变量变为只读变量,不能通过变量名修改它对应空间的值,但可通过其他途径修改此变量对应空间的值,一般修饰函数形参。在C++中,与C语言有两点不同:1、被它修饰的变量为常量,任何途径都无法修改;2、指针必须是const型对const型,非const型对非const型。
2.static:C语言中,static修饰局部变量、全局变量和函数,被修饰的局部变量生存周期从函数结束延长到程序结束;被修饰的全局变量和函数,只可在本程序中被调用,不能在其他程序中被访问;C++中,static修饰的成员必须在类外初始化,const static修饰的成员可在类内初始化,static修饰的类内函数不属于对象,属于类;因为static修饰的函数无this指针,所以静态成员函数不能访问非静态成员,非静态成员函数可以访问静态成员。
3.register
作用:请求编译器尽可能的将变量存在CPU内部寄存器中,一般的变量存在内存中,当需要时CPU再从内存中把它抓取到CPU中,使用register把它存在CPU中省去了CPU从内存中抓取数据的时间,提高运行效率。
注意:1、尽可能,因为CPU内存有限,不可能全放在里面,一般把频繁使用的变量放在里面,如循环变量。
2、register只能修饰局部变量,不能修饰 全局变量和函数。
3、register修饰的变量不能使用取地址符获取地址,因为它保存在CPU里,不在内存中。
4、register修饰的变量一定是CPU接受的类型。
C++优化:register修饰的变量可以用取地址符取地址。
4.new和delete
new是C++中特有的关键字,用来给变量分配空间;delete是用来释放空间。
用法如下:
分配指针空间
int*p = new int;
delete p;
分配数组空间
int*p = new int[3];
delete []p;//方括号里不需填东西
还可以进行初始化
int*p = new int(3);//这时 *p就指向3
int*p = new int[3](1,2,3);//注意,这是不允许的只能对单个内存空间进行初始化
5.new和malloc的区别
1.new是C++里的一个关键字,malloc是C中的函数
2.new分配单个内存空间可初始化,malloc不可以
3.new是以具体类型分配空间,malloc是以字节分配空间
4.new返回指向此类型的指针,不用进行强制类型转换,malloc返回void型的指针,需要强制类型转换
- C:关键字,你到C++里就变了
- C 关键字之别搞砸了 volatile
- C 关键字
- C# 关键字
- C 关键字
- C-关键字
- C 关键字
- [C关键字]void 关键字
- c/c++-----static关键字
- C/C++:typedef关键字
- (C/C++)register关键字
- 【c/c++】关键字typedef
- 【C/C++】关键字static
- c/c++static关键字
- C/C++_log2000_explicit关键字
- 学习C++,你注意了么?
- 你了解C语言中的关键字volatile吗?
- 你对C语言的关键字,知多少
- 1096: 字符串的修改
- HDU1089-HDU1096 A+B for Input-Output Practice (I)-(VIII)(入门必备训练)
- 关于微信小程序文档编辑的坑
- 从JVM角度看Java多态
- 实战—初始页
- C:关键字,你到C++里就变了
- 动态规划的思想
- 基于Web端的H5有什么优势?
- PyQt4对话框(dialog类型介绍)
- rex 传参
- 下拉列表ListPopupWindow
- Java多线程系列--“JUC锁”02之 互斥锁ReentrantLock (r)
- bzoj 2095: [Poi2010]Bridges 二分答案+网络流
- 斜线/、反斜线\、双斜线//、双反斜线\\ ,区别