const型

const是C语言中用来声明常量的关键字,用const声明的变量不能改变其值,必须要在其定义的时候就直接赋一个初值,在该变量的生存周期内不能再改变其值。

因为const和宏定义在C语言中容易混淆,这里用两者来进行比较。

1.宏定义是在预处理的时候,将所有符合定义时的规则的字符直接替换的操作,而const是程序在运行的时候(即进程)在内存中申请的一个常量空间。

2.在C语言里面const 和宏定义定义常量的效果基本一样。但是在定义一个常量的时候,const 的用法会比宏定义的效果更好,原因是const 变量出的值是一个变量,而宏定义是生硬的替换,宏定义是不会帮我们检查我们替换之后的结果是否有错误,所以有时候直接替换可能会出现我们不想要的结果。

3.const 不能用来定义除变量以外的元素,而宏定义可以用来替换函数、方法等等。


#define PI 3.1415926       //如果使用处严格要求数据类型为int型程序不会在编译的时候报错

float const PI=3.1415926  

如上,如果是定义一个普通的常量的话,const 会比宏定义好,这样如果出错了程序会检测出来。


const定义一个指针的方法。

const int *p;
int const *p;
int * const p;

与用const定义一个普通常量一样,const 和数据类型的先后顺序没有关系,也就是说上面前两者的效果是一样的,都是定义一个常量指针。

但是第三个方式与前两者就有非常大的区别了。

前两者是没有办法通过p指针去改变所指向的地址里的值。

int a=1;
const int *p = a;
*p = 2;   //会出错
这样的操作会报错,用了const 就不能通过p来改变a的值,但是如果直接改变a的值是可以的。

int a = 1;
const int *p =  a;
a = 2;
这样的操作是没有问题的。


第三个方式int * const p;

这样的方式很少见,但是确实存在。其意思是指锁定了p指针的值,也就是固定了p指针所指向的变量。

这里其实大家应该想到,本身指针这种东西,就是为了能让我们在操作的时候能让这个指针指向各种变量的地址。现在又要固定其所指向的地址,这样的操作并没有给我们带来什么实际上的意义,改变不了方向的指针不如直接申请多一个变量来保存。所以这种方式是极少数情况才会使用,这里也不推荐使用这种方式,但是作为一个合格的程序员,还是要知道这代表什么意思。

int a = 1, b = 2;
int * const p = a;
p = b;

这样的操作是会出错的。


我们常用的const使用方式是第一或者第二种,第三种比较少用。举个例子,如果我们在输入某个指针参数的时候,不希望此函数改变这个指针参数里面的值,为了防止误操作,可以在声明形参的时候,在参数前加上const,这样在函数调用的时候,函数就不能通过指针将对应的值改变。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值