做网站就要租服务器/百度推广的广告真实可信吗
布尔型常量
bool型常量只有true(真)和false(假)两个值,大小为一个字节
编译系统默认非0都为true
typedef语句
typedef能为一种数据类型添加别名
typedef float real;
float x,y;等价于real x,y;
const修饰符
被const修饰后的变量都为常变量,不能被程序改变
const char* p; //该指针指向的对象的内容不能改变
char* const p; //该指针不能更改指向的对象
八进制和十六进制
八进制常量书写格式以0开头
十六进制常量书写格式以0x开头
位运算表达式 例:
按位取反:~x 0->1,1->0
按位异或:x~y 相同为0,不同为1
按位与:x&y 相同为1,不同为0
按位或:x|y 有1为1,同为0则为0
左移位运算:x=x<<3 向左移3位,右补3个0
右移位运算:x=x>>3 向右移3位,左补3个0
引用
int x=3;
int &y=x;
y就是x,x就是y,y是x的另一个名字
寄存器变量
为寄存器分配变量后,使用时无需再到内存去存取,因此速度很快
c++规定只能定义整形寄存器变量(包括char,int,指针)
定义了寄存器变量不一定都能分配到寄存器,c++的编译程序会在寄存器不够分配时将一些或全部寄存器变量自动转换为一般变量
寄存器变量声明方法:register int x,y;
void指针
void指针可以指向任何数据类型,但在取内容时需要进行强制转换
内联函数
条件:除了在函数的函数体内有选择循环等语句的函数,都可以声明为内联函数
例子:
inline int max(int x,int y) //定义一个内联函数
{
return x>y?x:y;
}
函数调用时编译器会把cout<<max(a,b)<<endl; 自动转换为
exit()和abort()函数
作用都是中止进程,区别在于exit要参数,并且中止进程时会释放内存,abort不要参数,并且中止进程后不会释放内存
exit(参数),参数为0或EXIT_SUCCESS为正常退出,其余为异常退出
枚举类型
所谓枚举就是在定义变量时将其可能的取值都一一列举出来 //不能为枚举变量赋予整型数,因为类型不同,要进行强制转换才能赋值
//例如定义一个星期几类型
(1)
enum weekdaytype
{
sunday; 值为0
monday; 值为1
thesday; 值为2
… //每个枚举元素实际上是以一个以其所在位置顺序的值的常量,从0开始
…
};
sunday~saturday分别取值0,1,2,3,4,5,6
(2)也可以在定义的时候为其赋值
enum weekdaytype
{
sunday=7; 值为7
monday; 值为1
thesday; 值为2
…
…
};
sunday~saturday分别取值7,1,2,3,4,5,6
宏定义
宏分为无参数宏定义和带参数宏定义两种
1.无参数宏定义
格式:#define PI 3.14159
预处理:
宏-》替换序列 源程序这样写s = PIrr;被替换成s = 3.14159*r*r;
正式编译时:符号名PI不存在,即不存在宏。
取消宏定义命令#undef用于撤销对一个符号名的定义
格式:#undef PI
2.带参数宏定义
格式:#define max(a,b) ((a)>(b)?(a):(b))
含义是:告诉编译系统,一旦遇到形如man()的串时就要自动转换,转换的同时还要对参数进行替换处理
用法很像函数,区别在于:编译处理时,并不是值代入,而只是简单的替换
例如:
源程序这样写x = max(x,10);编译时被替换成x = ((x)>(10)?(x):(10));
附图指针内容: