C++指针数组:定义、初始化和遍历
一、数组指针的定义和使用
数组指针是指一个指针,该指针指向一个数组的首地址。它可以用来指向一个一维数组、二维数组、多维数组等。
声明一个数组指针的方法为:
数组类型 (* 指针变量名)[元素个数]; 如:int (*p)[5]; //p是一个指针,指向一个拥有5个元素的int数组的首地址。
使用数组指针的过程中,需要注意指针和数组的对应关系。例如,可以通过指针访问数组中的元素:
int arr[5] = {1, 2, 3, 4, 5}; int (*p)[5] = &arr; //将指向数组arr的指针赋值给指针p cout << (*p)[0] << endl; //输出1 cout << (*p)[1] << endl; //输出2
这里需要注意,使用指针访问数组中的元素时需要用括号将指针和数组下标括起来。
二、指针数组的定义、初始化和遍历
指针数组是指一个数组,该数组的元素为指针类型。它的每个元素都指向一个不同的地址。
声明一个指针数组的方法为:
类型* 数组名[元素个数]; 如:int* ptr[5]; //ptr是一个数组,包含5个整型指针
指针数组的初始化可以分为两步:
第一步:定义指针数组,并为其分配存储空间。
int* ptr[5]; //定义包含5个指向int类型的指针的指针数组
第二步:为每个指针指定指向的对象。
int a = 10, b = 20, c = 30, d = 40, e = 50; ptr[0] = &a; ptr[1] = &b; ptr[2] = &c; ptr[3] = &d; ptr[4] = &e;
指针数组中的元素可以通过下标遍历访问。
for(int i = 0; i < 5; i++) { cout << *ptr[i] << endl; //输出每个指针指向的整型变量的值 }
三、指针数组与数组指针的区别
指针数组和数组指针虽然有些相似,但仍然有区别。
指针数组可以被认为是一个数组,其中包含的元素是指针类型,每个指针指向不同的存储地址。
而数组指针是指向一个数组的指针,它本身是一个指针类型,指向的数组元素可以是一维、二维、多维等。
另外,指针数组中的元素可以通过下标遍历访问,而数组指针需要通过指针访问数组元素。
四、总结
数组指针和指针数组都是非常重要的C++基础知识。理解它们的定义、初始化和使用方式可以帮助我们更加熟练地进行各种数组的操作。
例如,在函数中传递一维、二维数组时,使用指针和数组指针可以避免数组复制带来的性能损耗。
代码示例:
//数组指针的定义和使用
#include
using namespace std;
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int (*p)[5] = &arr;
cout << (*p)[0] << endl;
cout << (*p)[1] << endl;
return 0;
}
//指针数组的定义、初始化和遍历
#include
using namespace std;
int main() {
int* ptr[5];
int a = 10, b = 20, c = 30, d = 40, e = 50;
ptr[0] = &a;
ptr[1] = &b;
ptr[2] = &c;
ptr[3] = &d;
ptr[4] = &e;
for(int i = 0; i < 5; i++) {
cout << *ptr[i] << endl;
}
return 0;
}