C++基础(一)
基本数据类型
引用与指针
const
ifndef
C++常用的基本数据类型
数据类型 | 含义 |
---|---|
bool | 布尔类型 |
char | 字符 |
wchar_t | 宽字符 |
short | 短整型 |
int | 整形 |
long | 长整型 |
float | 单精度浮点数 |
double | 双精度浮点数 |
void | 空类型 |
- 要注意string不是基本数据类型,而是一个类,使用string定义变量要使用string头文件
- void类型不对应具体的值,在函数不返回任何值时可以用空类型作为返回值
引用与指针
- 引用(reference)为对象起了另外一个名字,引用本身并不是一个对象,所以对引用的操作实际上是在对与引用绑定的对象操作。
- 引用的定义方式:int i=1,&refi=i;//其中refi是一个引用,与i绑定。
- 指针(pointer)也是实现对对象间接访问的一种方式。但指针本身也是一个对象。
- 指针的定义方式:int i=1,*p=i;//这里可以说p是指向 i 的一个指针。
- C++11新特性:nullptr:空指针。
引用与指针的区别:
引用 | 指针 |
---|---|
引用不可以为空 | 指针可以为空 |
引用只是一个别名 | 指针是一个实体,有自己的内存空间 |
引用必须初始化 | 指针不是必须要初始化 |
引用自初始化后不可改变 | 非常指针在生命周期内可以指向不同的对象 |
sizeof(引用)获得所引用对象的大小 | sizeof(指针)获得指针的大小 |
对引用操作是对值操作 | 对指针操作是对指针本身操作 |
引用只能有一级 | 指针可以有多级 |
存在指向指针的引用 | 不存在指向引用的指针 |
关于const
- const类型限制只能在const类型的对象上执行不改变其内容的操作。
- const可以修饰变量,指针,函数参数及成员函数。
- C++11新特性:可以使用constexpr声明变量来验证变量值是否是常量表达式
const与指针
- const int *p=i; //意味p指向的是一个常量,则i不可被改变。
- int * const p=i;//意味p是一个常量指针,则p只可能指向i
- const int * const p;//意味着常量指针指向一个常量,p的指向与i都不可以被改变
关于类型
- C++11新标准:auto:声明变量,由编译器来推断变量类型
auto i=3,*p=i,j=3.14;//编译器会自动分析i,p,j的类型
- C++11新标准:decltype:返回操作数的数据类型。
int i;
decltype(i) j=1;//j的类型就是i的类型
decltype(fun()) k;//k的类型是fun()的返回类型
int &p=i;
decltype(p) q;//注意:这个语句是错误的,p是一个引用,q也是,所以必须初始化。
- 使用预处理变量保护头文件不被多次包含。
#ifndef Head_H//只有第一次包含head.h时会执行endif之前的代码。
#define Head_H
//----------
#endif