在C++中,获取数组大小以及操作多维数组都是很常见的任务。让我们逐步了解这些操作。
在C++中,一般情况下,数组的大小是在编译时确定的,因此无法像其他语言一样直接获取数组的大小。但是,可以通过一些技巧来获取数组的大小。
sizeof
sizeof运算符可以返回其操作数的大小(以字节为单位)。可以通过sizeof运算符来获取数组的大小,然后除以单个元素的大小得到数组中元素的个数。
#include <iostream> int main() { int arr[] = {1, 2, 3, 4, 5}; int size = sizeof(arr) / sizeof(arr[0]); std::cout << "Size of array: " << size << std::endl; return 0; }
可以编写一个模板函数来获取数组的大小,并通过模板参数推导来确定数组的大小。
#include <iostream> template<typename T, size_t N> constexpr size_t arraySize(T (&)[N]) { return N; } int main() { int arr[] = {1, 2, 3, 4, 5}; std::cout << "Size of array: " << arraySize(arr) << std::endl; return 0; }
C++支持多维数组,可以是二维、三维甚至更高维度的数组。多维数组可以通过嵌套数组或者使用指针来表示。
#include <iostream> int main() { int arr[2][3] = {{1, 2, 3}, {4, 5, 6}}; std::cout << "Element at arr[1][2]: " << arr[1][2] << std::endl; return 0; }
#include <iostream> int main() { int arr[2][3] = {{1, 2, 3}, {4, 5, 6}}; int* ptr = &arr[0][0]; // 获取指向第一个元素的指针 std::cout << "Element at arr[1][2]: " << *(ptr + 1*3 + 2) << std::endl; return 0; }
在这两种方法中,数组的元素都是连续存储的,只是访问的方式略有不同。第一种方法使用嵌套的数组索引来访问元素,而第二种方法通过指针算术来计算元素的地址。
原文链接:codingdict.net