您的位置:首页 > 编程语言 > C语言/C++

C++中的const和define详解

2015-09-13 14:33 260 查看
//c++推荐使用const表示常量

#define kABC 12

const
int ABC =10;

#define MAX(x,y) ((x)>(y))?(x):(y);

//下面的是宏无法替换的地方

#define TO_Start(x) #x//这样声明直接输出的就是字符串

#define CoNCAT(x,y) x##y//意思可以把x和y连接成字符串

int main(int argc,
const char * argv[]) {

// insert code here...

std::cout <<
"Hello, World!\n";

//下面的写法错误 a是常量不能通过指针来改变它的值

// const int a=10;

//

// int *p=&a;

//下面是用#define的弊端

int m=10;

int n=6;

int x=MAX(++m, n);

cout<<m<<endl;

int k=10;

// //*p时常量,不能通过*p来修改k的值但是p的值可以改变

//

// const int *p=&k;

//

//// p=20;

//

// int m=20;

//

// p=&m;

//

// cout<<"pde值是"<<*p;

// //下面的情况p不可以改变 *p可以改变

// int * const p = &k;

// //下面的情况 p和*p都不可以改变

//

// const int * const p=&k;

//

// const int a=10;

//判断下列p1,p2的变量类型和常量性

// int const *p1,p2; // p1指针变量 p2是常量

//

// int const * const p1,p2;//p1不能变
*p1也不能变 p2也不能变

//

// int *const p1,p2; // p1 p2不可变 *p1可变

// const的常量性判断
看const右边是什么 const右边的东西都是常量

//const和数据类型没有关系

// const int a=10;等价与 int const a=10;

//const和#define都能用来定义常量可以造成一改全部跟着一起改的效果实际上要推荐使用

//使用const或者enum来定义常量

//const推出的初始目的正是为了取代预编译指令,消除它的缺点同时继承他的优点

//const可以节省空间,避免不必要的内存分配

//const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是像#define一样给出的是直接数

//所以const定义的常量在程序运行过程中只是一份拷贝而#define定义的常量在内存中有若干拷贝

setwidths(1)=20;

test() = 30;

cout<<"年龄是"<<age<<endl;

const int a=10;

// int &af=a;这样写是错的

const int &af=a;

double d=10.5;

// const int &df=d;//等价于
先把d的值存储到一个临时变量中然后在把这个临时变量复制给df所以是可以行的通的

//

//

// cout<<&df<<","<<&d;

// int &df=d;

const double &df=d;

d=30;

cout<<df;

int b=20;

int c=10;

my_swap(c,b);

return 0;
}

void testRef2(){

int a =10;

int b=20;

int &af =a;

af=b;//将变量b的值给了af也就给了a

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: