1.C++ 数组
C++ 支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。所有的数组都是由连续的内存位置组成。最低的地址对应第一个元素,最高的地址对应最后一个元素。一个二维数组可以被认为是一个带有 x 行和 y 列的表格。数组中的每个元素是使用形式为 a[ i , j ] 的元素名称来标识的,其中 a 是数组名称,i 和 j 是唯一标识 a 中每个元素的下标。
数组名是一个指向数组中第一个元素的常量指针。
C++ 不允许向函数传递一个完整的数组作为参数,但是,您可以通过指定不带索引的数组名来传递一个指向数组的指针。
如果您想要在函数中传递一个一维数组作为参数,您必须以下面三种方式来声明函数形式参数1、形式参数是一个指针:2、形式参数是一个已定义大小的数组:3、形式参数是一个未定义大小的数组:
就函数而言,数组的长度是无关紧要的,因为 C++ 不会对形式参数执行边界检查。
C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。
2. C++ 字符串
C++ 提供了以下两种类型的字符串表示形式:
C 风格字符串
C++ 引入的 string 类类型
3.C++ 指针
指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明
type *var-name
所有指针的值的实际数据类型,不管是整型、浮点型、字符型,还是其他的数据类型,都是一样的,都是一个代表内存地址的长的十六进制数。不同数据类型的指针之间唯一的不同是,指针所指向的变量或常量的数据类型不同。
使用指针时会频繁进行以下几个操作:定义一个指针变量、把变量地址赋值给指针、访问指针变量中可用地址的值。这些是通过使用一元运算符 * 来返回位于操作数所指定地址的变量的值。
4.C++ Null 指针
在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。
指针是一个用数值表示的地址。数组是一个常量指针。
5.C++ 指向指针的指针(多级间接寻址)
指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链。通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置。
C++ 允许您传递指针给函数,只需要简单地声明函数参数为指针类型即可
野指针:当前指针所指的资源释放后,当前指针没有置空(nullptr)
指针悬挂:当前指针所指的资源被另一个指针(这个指针在资源是释放后置空)释放
6.C++ 引用
引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。
7.C++ 引用 vs 指针
引用很容易与指针混淆,它们之间有三个主要的不同:
- 不存在空引用。引用必须连接到一块合法的内存。
- 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
- 引用必须在创建时被初始化。指针可以在任何时间被初始化。
通过使用引用来替代指针,会使 C++ 程序更容易阅读和维护。
8. C++ 日期 & 时间
为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 <ctime> 头文件。
time_t time(time_t *time);
该函数返回系统的当前日历时间,自 1970 年 1 月 1 日以来经过的秒数。如果系统没有时间,则返回 .1。
9.C++ 基本的输入输出
C++ 标准库提供了一组丰富的输入/输出功能,我们将在后续的章节进行介绍。本章将讨论 C++ 编程中最基本和最常见的 I/O 操作。
C++ 的 I/O 发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。
预定义的对象 cout 是 ostream 类的一个实例。cout 对象"连接"到标准输出设备,通常是显示屏。cout 是与流插入运算符 << 结合使用的。
预定义的对象 cin 是 istream 类的一个实例。cin 对象附属到标准输入设备,通常是键盘。cin 是与流提取运算符 >> 结合使用的。
10.C++ 数据结构
C/C++ 数组允许定义可存储相同类型数据项的变量,但是结构是 C++ 中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。
访问结构成员
为了访问结构的成员,我们使用成员访问运算符(.)
结构作为函数参数
您可以把结构作为函数参数,传参方式与其他类型的变量或指针类似。
指向结构的指针
您可以定义指向结构的指针,方式与定义指向其他类型变量的指针相似
现在,您可以在上述定义的指针变量中存储结构变量的地址。为了查找结构变量的地址,请把 & 运算符放在结构名称的前面,
typedef 关键字
一种更简单的定义结构的方式,您可以为创建的类型取一个"别名"
总结:
数组是一个连续空间下的固定大小相同类型元素的集合,数组名指向第一个元素的指针,不可向函数传入一个完整数组,注意多维数组形式,
c++字符串c语言和c++string串
指针是一个变量,这个值是某个变量的地址,内存位置直接地址,使用之前需要进行声明,无论什么类型代表内存地址的十六位进制数,指针指向变量类型不同指针类型不同,首先定义一个指针变量,地址赋给指针,访问指针变量可用地址的值,*取地址的变量值
指针没有赋值可以使用NULL赋值
指针的指针是指针地址的存放地址,野指针是释放资源后,指针没有为空,指针悬挂当前指针指向的资源被其他指针释放
引用就是一个变量别名,影响实参
引用与指针的区别:不能空引用,必须连接合法内存,引用定义之后不能再定义另一个对象,指针可以,引用创建必须初始化,指针任何时候都可以初始化
时间头文件是ctime文件,time_t是时间戳,自从1970年1月1日得到现在时间
输入输出是cin输入(键盘)cout输出(显示器)
数据结构是可以人为设定的一种数据结构,存储不同类型的数据项,使用.来访问数据成员,数据结构也可以作为参数,数据结构也有指针&取址,typedef定义结构取别名