C++的原生数组是指在内存中预留一段固定大小的连续空间用于存储同种类型的数据元素。这种数据结构是C++的重要组成部分,掌握原生数组的使用可以提高程序员的编程水平。
声明与初始化
声明一个数组需要指出数组的类型和名称,还需要指定数组的大小。例如,声明一个包含10个整数的数组需要这样写:
int arr[10];
数组的元素可以在声明时就初始化。
int arr[3] = {1, 2, 3}; // 初始化数组
也可以不初始化,此时数组元素会被设置为默认值0:
int arr[5] = {}; // 数组元素全部被设置为0
访问数组元素
可以通过下标运算符[]来访问数组元素。数组下标从0开始,最大下标为数组长度减1。例如,访问arr数组中第5个元素可以这样写:
int fifth = arr[4];
数组名arr在表达式中可以被隐式转换为指向数组首元素的指针,因此也可以通过指针运算来访问数组元素,如:
int fifth = *(arr + 4);
数组作为函数参数
在函数调用参数中,数组的名称会自动转换为指向数组首元素的指针。因此,对于一个数组作为函数参数的声明,数组的大小并不是必要的,如:
void printArray(int arr[], int size)
{
for (int i = 0; i < size; ++i)
{
std::cout << arr[i] << " ";
}
}
这个函数接收一个指向整数数组的指针arr,以及数组的大小size。在函数内可以通过数组名称或指针来访问数组元素。示例代码如下:
int main()
{
int arr[] = {1, 2, 3, 4, 5};
printArray(arr, 5); // 输出 1 2 3 4 5
return 0;
}
多维数组
除了一维数组,C++还支持多维数组,例如二维数组。二维数组可以理解为由若干个一维数组组成的数组。
声明一个二维数组需要指定两个维度。例如,声明一个包含3行4列的整数数组需要这样写:
int arr[3][4];
数组的元素可以在声明时就初始化。
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}}; // 初始化数组
也可以不初始化,此时数组元素会被设置为默认值0:
int arr[2][3] = {}; // 数组元素全部被设置为0
同样可以通过下标运算符[]来访问数组元素,示例代码如下:
int main()
{
int arr[2][3] = {{1, 2, 3}, {4, 5, 6}};
std::cout << arr[0][0] << std::endl; // 输出 1
std::cout << arr[1][2] << std::endl; // 输出 6
return 0;
}
总结
C++的原生数组是一种简单而有效的数据结构,掌握了原生数组的使用可以提高程序员的编程水平。需要注意的是,数组名称会隐式转换为指向数组首元素的指针,这可能会导致程序设计上的误解。在使用数组时需要注意数组的下标范围,越界访问会导致不可预知的程序行为。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++的原生数组你了解多少 - Python技术站