const定义的常量

 

const定义的常量会被编译器看作是固定值的变量,它与宏不同。

因此,假如有头文件

"head.h"

 

#ifndef HEAD

#define  HEAD

const int EOF = -1

#endif

----------------------------------

有两个C文件C1C2如下:

C1

#include "head.h"

 

C2

#include "head.h"

 

只时编译会出现EOF已定义的错误,原因是#ifndef#endif只对同一个文件起作用,这样就使C1C2同时包含了EOF的定义,导致出错。

 

因此,必须改写"head.h"如下:

#ifndef HEAD

#define  HEAD

extern const int EOF // 仅仅声明EOF

#endif

 

然后,把EOF实际定义在别处。

 

 

 

结论:可以在头文件里包含的东西,都不应该会导致编译器出现具体分配操作的语句。

---------------------------------------------------------------------------------------------------------

const char* str="abc" 和 char* const str="abc" 的区别

const char* str="abc" 或 char const *str="abc" 表示值"abc" 不可修改,而str能够指向另一个字符串。

char* const str="abc" 表示值"abc" 可以修改,而str不能够指向另一地址。

当然,有const char* const str="abc"

 

还可以用const修饰多级指针,

如:

const char** pstr

则**pstr = 'c' //赋值非法

const 能够在多指针的中间出现,表示const后面的部分不可修改.

char* const * pstr;

则 *pstr ="abc" //赋值非法

但 **pstr = 'c' //允许

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值