指针和引用,除了通过名字直接访问变量的内存单元,也可以使用内存地址找到存放数据的单元,间接访问其中的内容。指针可以持有对象的地址,引用则是对象的别名。定义指针变量的语法:类型 *指针变量; 指针存放指定类型的对象的地址,要获取对象的地址,使用取地址运算符“&”。指针值为0时表示它是一个空指针,即不指向任何对象的指针。void*指针,它可以持有任何类型的地址值。void只能表明相关的值是个地址,但是该地址保守的对象类型不知道。引用又称别名,它可以作为对象的另一个名字。通过引用可以间接地操纵对象。定义左值引用的方式:
类型 &引用变量=初始值。右值引用,目的是支持移动操作,右值引用就是必须绑定到右值的引用。定义右值引用的形式:类型 &&右值引用变量=右值表达式。可以显式地将一个左值转换为对应的右值引用类型,方法是调用标准库<utility>中定义的函数std::move()。move()函数返回给定对象的右值引用。const限定词将一个对象限定为一个常量。const也可以限定指针和引用。定义const指针时必须初始化。指向const对象的const指针
const int* const pi=&ival;第一个const限定int,表示指针指向的单元是常量,第二个const限定pi,表示指针的值也是一个常量。把引用绑定到const对象上就像绑定到其他对象上一样,称为常量的引用。结构体把一组来自不同类型的数据组合在一起构成符合类型,其中的每个数据都是结构体的成员。结构体由关键字struct定义,语法形式为:struct结构体类型名{
成员声明;
};
结构体的成员不能独立使用,必须由结构体类型的变量通过成员选择运算符“.”来选择,或者由结构体类型的指针通过“_>”运算符选择。联合由关键字union定义,也称共用体。union和struct的语法类似,只是数据成员的存储方式不同(每次只能使用一个成员)。枚举类型定义了一组命名的整数常量,以提高代码的可读性。使用数组下标时,通常将其定义为size_t类型。size_t是一种机器相关的无符号类型,在<cstddef>头文件中定义,用来表示内存中任意对象的大小。begin()和end(),这两个函数在头文件<iterator>中定义,用法为:begin(数组名) end(数组名),begin()函数返回指向数组第一个元素的指针,end()返回指向数组最后一个元素的下一个位置的指针。标准库类型string表示可变长度的字符类型。标准库类型vector表示对象的集合,其中所有对象的类型都相同,可以通过索引访问各个对象。定义vector时必须指定元素的类型,格式为:vector<元素类型>变量名;使用下标运算符可以vector中指定位置的元素。vector<T>类型对象的下标类型是vector<T>::size_type。迭代器类似于指针类型,提供对对象的间接访问。文件读写,最简单的读写文件方法是使用文件重定向,也就是将标准输入和标准输出与命名文件关联起来。使用文件流要包含头文件<fstream>。字符串流要包含标准库头文件<sstream> 。函数,函数定义的语法形式:
数据类型 函数名(形式参数表)
{
函数体 //执行语句
}
函数的数据类型是函数的返回值类型(若数据类型为void,则无返回值)。。函数名是标识符,一个程序中除了主函数名必须为main外,其余函数的名字按照标识符的取名规则可以任意选取,最好取有助于记忆的名字。形式参数(简称形参)表可以是空的(即无参函数),也可以有多个形参,形参间用逗号隔开,不管有无参数,函数名后的圆括号都必须有。形参必须有类型说明,形参可以是变量名、数组名或指针名,它的作用是实现主调函数与被调函数之间的关系。
·函数中最外层一对花括号“{}"括起来的若干个说明语句和执行语句组成了一个函数的函数体。由函数体内的语句决定该函数功能。函数体实际上是一个复合语句,它可以没有任何类型说明,而只有语句,也可以两者都没有,即空函数。
·函数不允许嵌套定义。在一个函数内定义另一个函数是非法的,但是允许嵌套使用。
函数调用:生命了函数原型之后,便可以按如下形式调用函数:函数名(实参列表);
函数的传值调用:函数的调用方式分传值调用和传址调用。传值调用:参数传递方向只是从实参到形参,简称单向值传递。传址调用:将实参变量的地址值传递给形参,这时形参是指针,即让形参的指针指向实参地址。按引用传递,函数接收的是实参的左值而不是值的副本,即形参是实参的引用,或者说是别名。重载函数允许多个函数共享同一个函数名,但是针对不同的参数类型提供不同的操作。
这个学期的c++课程很难,有的东西到现在还不会,课下一定要询问同学,把不会的问题搞会。
c++现在小结
最新推荐文章于 2022-05-05 11:00:26 发布