文章目录提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
创新互联建站致力于成都做网站、网站制作,成都网站设计,集团网站建设等服务标准化,推过标准化降低中小企业的建站的成本,并持续提升建站的定制化服务水平进行质量交付,让企业网站从市场竞争中脱颖而出。 选择创新互联建站,就选择了安全、稳定、美观的网站建设服务!
提示:以下是本篇文章正文内容,下面案例可供参考
const是C语言中保留的一个关键字,用来定义常量,如果一个变量被const修饰,那么它的值就不能被改变。使用符号常量写出的代码更容易维护;一些指针常常是边读边移动,而不是边写边移动;许多编程规范对于函数参数会强制要求只读不写,在这些情况下,都需要借助const实现。
二、const的使用 1.基本使用const是constant的缩写,意思是“恒定不变的”,它是定义只读变量的关键字。用const定义只读变量的方法很简单,就在定义变量时前面加const即可,例如:用一个变量来表示班级的大人数,或者表示缓冲区的大小。为了满足这一要求,可以使用const关键字对变量加以限定:
const int MaxNum = 100; //班级的大人数
我们经常将 const 变量称为常量(Constant)。创建常量的格式通常为:
const type name = value;
const 和 type 都是用来修饰变量的,它们的位置可以互换,也就是将 type 放在 const 前面:
type const name = value;
但我们通常采用第一种方式,不采用第二种方式。
由于常量一旦被创建后其值就不能再改变,所以常量必须在定义的同时赋值(初始化),后面的任何赋值行为都将引发错误。一如既往,初始化常量可以使用任意形式的表达式,如下所示:
#includeint getNum(){return 100;
}
int main(){int n = 90;
const int MaxNum1 = getNum(); //运行时初始化
const int MaxNum2 = n; //运行时初始化
const int MaxNum3 = 80; //编译时初始化
printf("%d, %d, %d\n", MaxNum1, MaxNum2, MaxNum3);
return 0;
}
结果为:100,90,80
用const修饰的值就不能被修改了,否则会发生错误
const int MaxNum = 100; //班级的大人数
MaxNum = 90; //错误,试图向 const 变量写入数据
2.const和指针常量指针是指针指向的内容是常量,可以有两种书写方式:
const int *m;
int const *m;
注:
a.常量指针说的是不能通过这个指针改变变量的值,但是还是可以通过其他的引用来改变变量的值的。
int a=10;
const int* m=&a;
a=11;
b.常量指针指向的值不能改变,但是这并不是意味着指针本身不能改变,常量指针可以指向其他的地址。
int m=1;
int n=2;
const int* a=&m;
a=&n;
int *const n;
注:指针常量指向的地址不能改变,但是地址中保存的数值是可以改变的,可以通过其他指向改地址的指针来修改。
int a=5;
int *p=&a;
int* const n=&a;
*p=8;
当然,指针本身和它指向的数据都有可能是只读的,下面的两种写法能够做到这一点:
const int * const p4;
int const * const p5;
const 和指针结合的写法多少有点让初学者摸不着头脑,大家可以这样来记忆:const 离变量名近就是用来修饰指针变量的,离变量名远就是用来修饰指针指向的数据,如果近的和远的都有,那么就同时修饰指针变量以及它指向的数据。
3.const和#define的区别1)const定义的常量时,带类型, define不带类型。
2)const是在编译、运行的时候起作用:而define是在编译的预处理阶段起作用。
3)define只是简单的替换,没有类型检查。简单的字符串替换会导致边界效应。
4)const常量可以进行调试的, define是不能进行调试的,主要是预编译阶段就已经替换掉了,调试的时候就没它了。
5)const不能重定义,不可以定义两个一样的,而define通过undef取消某个符号的定义,再重新定义。
#include#define A 1
#define B (A+3) //
#define C A/B*3 //
//const不能重定义,不可以定义两个一样的,而define通过undef取消某个符号的定义,再重新定义
const double PI=3.14;
//const double PI=3.145;
#define PI2 3.14
#undef PI2 // 取消PI2 的定义
#define PI2 3.145
int main() {//
//分析过程
//#define 就是一个简单的替换!!!
//C 其实是 A/A+3*3 = 1/1 + 3 * 3 = 1 + 9 = 10
//C 其实是 A/(A+3)*3 = 1/(1+3) * 3 = 1/4 *3 = ?
double d1 = 1.0/4 *3 ; // 0.25 * 3 = 0.75
printf("\nc=%.2f", C);// 问 c = ?
printf("\nd1=%.2f", d1);
return 0;
}
结果为:c=0.00
d1=0.75
6)define可以配合#ifdef、ifndef,#enndif来使用,可以让代码更加灵活,比如我们可以通过#define 来启动或者关闭调试信息。
#include#define DEBUG
int main() {#ifdef DEBUG //如果定义过 DEBUF
printf("ok, 调试信息");
#endif
#ifndef DEBUG //如果没有定义过 DEBUF
printf("hello, 另外的信息");
#endif
// printf("%d",n);
return 0;
}
结果为:ok, 调试信息
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧