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型的指针,需要强制类型转换




0 0
原创粉丝点击