三、指针与数组
3.1数组名的指针特性
数组名本质上是一个常量指针,指向数组的第一个元素。
int arr[5] = {1, 2, 3, 4, 5};
int* p = arr;// arr 等价于 &arr[0]
cout << p;// 输出 1
cout << (p+2);// 输出 3
cout << p[3];//输出4(指针也可以使用下标访问)
3.2 通过指针遍历数组
int arr[5] = {10, 20, 30, 40, 50};
for (int *ptr = arr; ptr < arr + 5; ptr++) {
cout << *ptr << ""; //输出:10 20 30 40 50
}
3.3二维数组与指针
二维数组作为参数传递时,第二维的大小不能省略。
// 以下都是合法的二维数组参数写法
void func1(int arr[3][4]) { }
void func2(int arr[][4]) { }// 可以省略第一维
void func3(int (*arr) [4]) { }// 指向包含4个int的一维数组的指针
// 错误的写法
// void func4(int arr[][]) { }// 不能省略第二维
// void func5(int ** arr) { }// 类型不匹配