- 8.1 指针声明和初始化
- int *x, *y;//指针声明
- 注意:每个指针声明变量前必须有星号,因为星号只作用于之后的第一个变量
- 初始化
- 定义为空指针
- int *x = nullptr;
- 定义为整数0或NULL
- int *x = 0/Null;
- NULL用来表示值0,因此和0是等价的,只有0无需强制转换为指针类型就可以初始化赋值给指针变量
- 定义为空指针
- int *x, *y;//指针声明
- 8.2 指针运算符
- 地址运算符&
- &用来获取操作数的内存地址,是一个一元运算符
- int y = 5; int *yPtr = nullptr; yPtr = &y;//指针保存的是一个变量的地址,因此用取址符&
- 间接运算符*
- *返回的是操作数所指向的对象,而不是地址
- cout << *yPtr << endl; cout << y << endl;//*yPtr 与 y是等价的,都是一个值
- 注意:间接引用的对象一定要是一个初始化的非空指针
- 地址运算符&
- 8.3 使用指针按引用传递
- 使用指针传递参数传递的是参数的地址,可以直接修改数据参数,而不是像按值传递会创建实参副本
- int cubeByReference(int *); int cubeByReference(int *nPtr){ *nPtr = (*nPtr)*(*nPrt)*(*nPtr);}
- 8.4 内置数组
- 声明
- type arrayName[arraySize];//arraySize必须是一个大于0的整数常量
- 方位内置数组元素
- 通过下标运算符[ ]访问单个元素
- 注意:内置数组和类模板array一样,不提供下标边界检查功能
- 初始化
- int numbers[5] = {0, 0, 0, 0, 0};
- int numbers[] = {0, 0, 0, 0, 0};
- 当不声明数组大小时,内置数组会根据初始化值列表的个数自动设置大小
- 若初始化值列表元素个数小于列表大小,剩下的元素会被自动初始化为0,false,nullptr,类的对象会根据构造函数自动初始化
- 声明内置数组形参
- int elements( const int values[], const size_t numberOfElement){};
- int elements( const int *values, const size_T numberOfElement){};
- 与类模板array不同的是,函数不知道内置数组的大小,因此需要传递参数数组大小
- 用*values和values[]声明是等价的,因为数组名指向的是数组第一个元素的内存(&values[0] = values),所以可以用指针声明
- 声明
- 8.5 使用const修饰指针
- 指向非const数据的非const指针
- int *xPtr
- 权限最大,可以修改指针和数据
- 指向const数据的非const指针
- const int *xPtr
- 不可以通过指针去修改指向对象,但可以修改指针
- 指向非const数据的const指针
- int const *xPtr
- 可以通过指针去修改指向对象,不可以修改指针
- 指向const数据的const指针
- const int const *xPtr
- 都不能修改
- 指向非const数据的非const指针
- 8.6 sizeof运算符
- 一元运算符sizeof返回内置数组或者其他数据类型的字节大小
- 当操作数为数据类型时需要加圆括号
- sizeof(int/double/char);
- 当操作数为表达式或者变量时不需要加
- sizeof x/a+b;
- 当操作数为数据类型时需要加圆括号
- 一元运算符sizeof返回内置数组或者其他数据类型的字节大小
- 8.7 指针表达式与运算符
- 指针加减整数
- ++/-- vPtr;
- 表示指针地址加上或减去一个数的字节大小×数的大小
- 指针相减
- x = v2Ptr - vPtr;
- 表示从一个指针到另一个指针之间出现的元素个数
- 注意:两个指针必须指向同一个内置数组才有意义,否则是一个逻辑错误
- 指针赋值
- 当指针类型不同时需用强制类型转换符reinterpret_cast
- void指针(void*)可以表示任何类型指针
- 不能间接引用void*指针,因为void指针指向一个未知数据类型的内存地址
- 指针加减整数
- 8.8 指针与内置数组
- 指针/偏移量表示
- *(bPtr + 3);
- 以内置数组明作为指针的指针/偏移量表示
- *( b + 3);
- 指针下标表示
- bPtr[3]
- 数组名下标表示
- b[3]
- 指针/偏移量表示
- 8.9 基于指针的字符串
- 字符常量char是一个整数值
- 字符串是一个被视为整体的字符序列
- 初始化
- char color[] = "blue";
- char color[] = {'b','l','u','e','\0'};//\0表示空字符结尾
08 chapter 指针(c++大学教程)学习笔记
最新推荐文章于 2025-04-14 11:44:51 发布