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
}
#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
}
相关文章推荐
- [C++] static的作用
- windows编程中c语言知识回顾
- C++位操作符总结
- C++ 类操作符重载笔记
- C++Primer第五版 第3章 字符串、向量和数组(练习解答)
- C++_std::bind std::function 高级用法
- Effective C++ 条款55 让自己熟悉Boost
- C++Primer第五版 3.5.3节练习
- C++Primer第五版 3.5.2节练习
- 文《左右c++与java中国的垃圾问题的分析与解决》一bug分析
- 從 C++ 創造者到 Facebook 共同創辦人,你該認識的 12 位工程師
- 第二周项目3(2) 汉诺塔
- C++的函数隐藏、覆盖和重载
- C++基础---面向对象
- C++字符串的使用
- Effective C++——条款34(第6章)
- C/C++ 中的0长数组(柔性数组)
- C++,传递多个参数
- C++兰不达表达式
- C++---处理宽字符