数据类型基础知识与操作
字,字节,字长,位
位:bit。0或1,一个2进制位
字节:Byte。1byte=8bit
字:word。1word=2byte
字长:数据总线宽度,和字没关系。不确定。有32位,64位。等
整形。3种
整数:short,int,long。short半个机器字长,int一个机器字长。long一般一个或两个机器字长
字符: char ,wchar_t。char普通字符,一个字节。wchar_t汉字,日文,字符。不能用一个字节表示的字符
布尔:0是false,非零为true
出bool外,其他类型都有signed和unsigned
浮点型
float:只能保证6位有效数字
double:可以保证至少10位有效数字
字面值常量
0开头是8进制
0x开头是16进制
L/l后缀为long
u、U后缀为unsigned
L"a"宽字符串字面值
变量:程序中可以操作的有名字的存储区
左值:可以出现在赋值语句左边或右边
右值:只能出现在赋值语句右边
初始化两种方式
int a=3;复制初始化方式
int a(3);直接初始化方式
初始化不是赋值,这是两种不同的操作
初始化是对象创建时赋初始值,赋值是擦出当前值用新值代替.
自动初始化
函数外部定义,自动初始化为0
函数内部定义,不做初始化。
extern只声明,不定义变量.e.g:extren int a;声明了变量a,但没有定义
作用域
全局作用域
局部作用域
语句作用域
const
const定义的对象不可变更起内容,但仍是左值
定义的同时必须初始化
const定义的对象,默认为局部变量,只能在本文件中访问,若要在其他文件中访问 要定义为如下形式:
file1.cpp //extern const int a=10;
file2.cpp //extern const int a;
引用
引用是绑定对象的别名,左右在引用上的操作事实上就是作用在绑定对象上的操作
声明方式 int &refVal=i; 用&声明引用
const引用:绑定到const对象上的引用,可以绑定右值.e.g:const int &refi=1;非const引用不能绑定右值
const引用是只读的.
typedef
用来类型的同义词
typedef double mydouble;
typedef int myInt;
使用目的:
隐藏实现,强调类型使用的目的
简化复杂的类型定义,增加可读性
允许一种类型用于多个目的
枚举enum
定义:enum open_mode{input,output,append};//input=0,output=1,append=2;
用于定义一组相关联的整数常量集
枚举成员的值初始化后便不能改变。
特殊:enum Points{point2d=2,point2w,point3=3,point3w};//point2d=2,point2w=3,point3d=3,point3w=4;
类类型
类定义都包括接口和实现
接口:使用该类的代码需要执行的操作,即该类提供的操作
实现:该类所使用的数据及定义该类所需要的但又不供一般性使用的函数
先定义接口,通过接口确定所需的数据,及支持接口所需的实现
类定义结束要有;
类包括成员函数和成员变量,成员变量一般在构造函数中初始化.
class 定义,默认是private.struct定义,默认是public的
自定义头文件
包括:
类定义
extern变量
函数声明
头文件用于声明而不是定义.不应该含有函数和变量的定义.因为头文件保护在多个源文件中,会出现多重定义链接错误.
不包含定义的例外
定义类
值在编译时就知道的const对象
inline函数
const int a=100可放在头文件中,二const int a=fun();应放在源文件中
#include
是c++预处理器的一部分
只接收一个参数<头文件名>
头文件保护符,避免多重包含
为避免名字冲突,预处理器变量一般全大写
#define 指示接受一个名字,并定义改名字为预处理器变量
#ifndef 指示检查指定的预处理器变量是否未定义
如果预处理器变量未定义那么跟在其后面的所有指示都被处理,指到出现#endif。预防多次包含同一头文件