1 数组
数组用于储存一系列类型相同的元素。
type name[elements] //一维数组的声明格式。
初始化数组
默认情况下,数组中所有元素的值在声明数组时是未确定的。
若要在声明数组时,将数组中的元素初始化为特定的值,可以使用 {} 实现,例如初始化数组 int a[5]:
int a[5] = {1,2,3,4,5}
若:
int a[5] = {1,2,3}
则a[3] = 0, a[4] = 0;
C++ 中支持多维数组,多维数组是指二维及以上的数组,其表达式为:
type name[index1][index2][index3]...[indexn]
2 字符串
C++ 支持起源于 C 语言的 C-style 字符串。
例如定义一个可以容纳 10 个 char 型字符的数组:
char ch[10];
注意:null 字符不用手动添加,C++ 在编译的时候会自动添加。
cstring
在 C++ 中有大量用于操作 C-style 字符串的函数,它们集成在头文件 中。其常见的函数:
函数 | 作用 |
---|---|
strcpy(s1,s2) | 复制字符串s2到s1 |
strcat(s1,s2) | 将字符串 s2 连接到 s1 末尾 |
strlen(s) | 计算字符串 s 长度 |
strcmp(s1,s2) | 比较字符串 s1 和 s2 的长度,相同为 0;s1 < s2 为 -1;s1 > s2 为 1 |
strchr(s1,ch) | 返回一个指针,指向 s1 中字符 ch 第一次出现的位置 |
strstr(s1,s2) | 返回一个指针,指向 s1 中字符串 s2 第一次出现的位置 |
C++ 标准库中提供了 string 类,它不仅支持 C-style 的所有操作,而且还丰富了其他功能。
对于字符串来说,常规操作符 + 的功能为 连接。
3 指针
指针是 C++ 从 C 中继承的重要数据类型,它提供了一种较为直接的地址操作手段,使用指针可灵活实现动态内存的分配。
指针变量的声明
指针是一种数据类型,具有指针类型的变量称为 指针变量,它用于存放内存地址。在使用指针之前,需对指针进行声明,其一般形式为:
type *pointer_name;
其中 type 表示所指对象的数据类型,即说明所指内存单元存放的数据类型;* 表示声明一个指针类型的变量;pointer_name 表示指针名。
值得注意的是,指针实际存放的是内存地址,不同类型的指针变量用于指向数据类型不同的变量或常量。
C++ 中提供了两个与地址相关的运算符:* 和 & 。其中 * 称为 指针运算符,用于获取指针所指变量的值,例如 *p 表示指针 p 所指变量的值;& 称为 取地址运算符,用于获取一个对象的地址,例如有变量 i,则 &i 表示 i 的存储地址。
指针的赋值与使用
定义指针后我们仅得到了一个用于存储地址的指针变量,若要确定指针变量存放的内存地址,可以通过给指针赋值实现。其基本形式为:
1.在定义指针时为指针赋值:
type *pointer_name=初始地址;
2.在定义指针后为指针赋值:
type *pointer_name;
pointer_name=初始地址;
其中 初始地址 为某个对象的内存地址,一般使用 &对象名 获取。
引用
引用是指对已存在的变量别名,我们可以使用引用名来指向对象。
引用与指针主要有三个区别:
- 可以通过 指针名=0 描述一个空指针,但不存在空引用。
- 指针可在任何时间进行初始化操作,而引用只能在定义时进行初始化操作。
- 指针变量指向内存的一个存储单元;而引用只不过是原变量的一个别名而已。
声明引用变量的基本格式为:
type &引用名=被指对象名;
& 在这里是标识作用,而非取地址运算符。
#include<iostream>
using namespace std;
int main ()
{
int acc[2][3] = {2,4,6,8,10,12};
cout<<acc[1][0]<<endl;
return 0;
}