1.数组和 Vector
- 数组大小固定,这一特性在某些场景下运行时性能较好
- 数组类似于 vector,适用于不清楚元素的确切个数
2.定义和初始化数组
数组声明形如 a[d], 其中大小必须大于 0
const unsigned sz = 10; // 常量表达式
int arr[sz]; // 含有 10 个整数的数组
int *parr[10]; // 含有 10 个整数的数组
初始化
/**
* 数组
*/
int main() {
int a[] = {0, 1, 2};
cout << "value = " << a[0] << endl; // value = 0
return 0;
}
3.指针与数组
使用数组类型的对象其实是使用一个指向该数组首元素的指针
/**
* 数组与指针
*/
int main() {
int a[] = {0, 1, 2};
// a[0] = 0
cout << "a[0] = " << a[0] << endl;
// 使用数组类型的对象其实是使用一个指向该数组首元素的指针
int *p = a; // 等价于 int *p = &a[0]
// 打印数组的首元素 *p = 0
cout << "*p = " << *p << endl;
// 打印出数组第二个元素 *(p++) = 1
cout << "*(p++) = " << *(++p) << endl;
return 0;
}
4.指针运算
- (+ x) :新指针指向的元素与原指针相比前进 x 个位置
- (- x) :新指针指向的元素与原指针相比后退 x 个位置
#include <iostream>
#include <vector>
#include <string>
using std::string;
using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::toupper;
/**
* 指针运算
*/
int main() {
int a[] = {0, 8, 2};
// 指针位置前进一位
int *p = a + 1;
// p = 8
cout << "*p = " << *p << endl;
return 0;
}