【每天学一点】C++基础02
来源:互联网 发布:网络二层 三层区别 编辑:程序博客网 时间:2024/06/04 18:17
今天又看了几家公司,感觉暑期实习都没有的招了,好像只有10月份的秋招了,好慌,怎么办。又再网上投了几家公司,依旧没什么消息呢。果然已经过了找实习的时间了。今天依旧是放假的样子,教研室依旧没什么人,好无聊啊。
const限定符:定义一个变量,它的值不能被改变。
1.任何试图向const限定的变量赋值,都会引发错误。
const float pi=3.14;pi=3.14 //错误
2.const对象必须初始化
const int a=get_num(); //正确,运行时初始化const int c=10 //正确,编译时初始化const int b; //错误
3.多文件引用常量
//global.hextern const float pi;//global.cppextern const float pi = 3.14; //定义初始化一个常量//b.cpp#include<iostream>#include"global.h"using namespace std;float getR(){ return pi * 2;}//a.cpp#include<iostream>#include"global.h"#include"b.h"using namespace std;void main(){ float r = getR(); cout << "r=" << r << endl; float s = pi*r*r; cout << "s=" << s << endl; getchar();}
输出结果:
r=6.28
s=123.837
从结果可以看出通过extern,不同文件都可以用到定义的常量。
const引用和指针
int a=1;int &r1=a;const int &r2=a;r1=0; //将a的值变成0r2=0; //错误,不能对常量引用修改
const int a=1;int *p1=&a; //错误,a是一个常量const int *p2=&a; //正确,p2可以指向一个int型常量*p2=0; //错误,不能赋值*p2
常量指针:
//指针常量int a,b=1;const int *p1=&a;*p1=2; //错误,*p不能赋值。p1=&b //正确//常量指针int *const p2=&a;*p2=0; //正确,可以赋值p2=&b; //错误P2不可改变//补充const int a=1;int b=3;const int *p3=&a; //正确,p3=&b; //正确int *const p4=&a; //错误,由于*p4可以修改,而a为常量,所以程序报错。
constexpr :可以让系统判断验证变量的值是否是一个常量表达式。
constexpr int m=1; //1是常量表达式 constexpr int s=2*m; //m*2是个常量表达式 constexpr int sz=size(); //只有当size()是一个constexpr函数时,这才是一条正确的语句
类型别名
//typedeftypedef double dou; //dou是double的同义词typedef dou a,*b; //a是double的同义词,b是double*的同义词//usingusing s=double //s是double的同义词
预处理保护头文件重定义
#ifndef GLOBAL_H //当且仅当变量未被定义时为真,与之对应#ifdef#define GLOBAL_Hextern const float pi;#endif //定义过后忽略#define~#endif之间语句 #pragma once //似乎也有用。
0 0
- 【每天学一点】C++基础02
- 【每天学一点】C++基础01
- 【每天学一点】C++基础03
- 【每天学一点】C++基础04
- 【每天学一点】C++基础5
- 【每天学一点】JAVA Servlet相关02
- 每天都学一点
- 每天学一点
- 每天学一点英语
- 每天学一点
- 每天学一点C#
- 每天学一点,总有一天
- 每天学一点1
- 每天学一点2
- 每天学一点3
- 每天学一点4
- 每天学一点5
- 每天学一点6
- SlidingMenu的属性详解
- Mongodb的副本集节点角色介绍及选举过程浅析
- SQLServer中服务器角色和数据库角色权限详解
- 山东第7届省赛 J题 Execution of Paladin
- SlidingMenu
- 【每天学一点】C++基础02
- mongodb 启动错误
- iOS开发如何集成支付宝SDK
- Ten Important Differences between Bluetooth BR/EDR and Bluetooth Smart
- 实现char*和CString的转换
- Imooc·Java高并发秒杀API(Spring-test与junit)
- MySQL导入CSV文件
- ?super T 和? extends T区别
- UVA 11584 Partitioning by Palindromes