C++ 获取数组大小、多维数组操作详解


在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