从C到C++的升级之const关键字的升级

来源:互联网 发布:电脑软件怎么恢复 编辑:程序博客网 时间:2024/06/04 23:01

const关键字(const修饰的变量一定要初始化

1)  C语言中的const

A.  const修饰的变量为只读变量,不能通过变量名修改变量值,但可通过变量空间修改变量的值;

B.  一般修饰函数的形参,避免在函数实现中修改实参的值,便于调试

const int num =5;num++;ànum = 5

const int num =5;int *p = #(*p)++;ànum= 6

2)  C++中的const

在C++中,const变量空间不可变,即相当于常量

const int num =5;num++;ànum = 5

const int *p =#(*p)++;ànum = 5

3)  const与#define的区别

A.  define只是用来做文本宏替换,define常量的生命周期止于编译器,它存在于程序的代码段,在实际程序中它只是一个常数;而const变量存在于程序的数据段,并在堆栈中分配了空间;

B.  define定义的常量在程序运行时不可以被调用、传递,因为define没有给名字分配空间,仅仅是给一个常数起了一个名字;而const常量在程序中确确实实存在,所以在程序运行时可以被调用、传递;

C.  define定义的常量没有数据类型;而const常量有数据类型,编译器可以对const常量进行类型安全检查。

4)  常量指针

常量指针有以下形式:

A.   char * const a;字符指针a本身是常量,但是a所指向的内存空间数据是可以改变的(定义时一定要初始化

B.   char const *a;字符指针a所指向的内存空间数值为常量,不可以改变,但是指针的本身是可以改变的

C.   const char *a;字符指针a所指向的内存空间数值为常量,不可以改变,但是指针的本身是可以改变的(与第二种相同)

D.   const char * const a;指针a本身时常量,并且指针a所指向的内存空间数据也为常量,定义时一定要初始化

 

0 0
原创粉丝点击