一、傳遞數組指針
在C++中,我們可以通過將數組名作為函數的參數來傳遞數組。由於數組名代表數組的首地址,所以我們可以使用指針來接收它:
void func(int arr[], int length) {
// ...
}
以上代碼中,我們定義了一個函數 func
,它接收一個整型數組指針 arr
和數組長度 length
。我們可以在函數中使用 arr
來操作數組中的元素。
需要注意的是,由於數組指針只是數組首地址的拷貝,所以在函數內部對數組元素的修改會影響原數組。
二、傳遞數組引用
除了傳遞數組指針外,我們還可以通過傳遞數組引用來操作數組。
void func(int (&arr)[5]) {
// ...
}
以上代碼中,我們定義了一個函數 func
,它接收一個長度為 5 的整型數組的引用 arr
。在這種情況下,arr
並不是數組首地址的拷貝,而是指向原數組的引用。
需要注意的是,因為數組引用的長度是固定的,所以在函數調用時,必須傳遞一個長度為 5 的數組。
三、使用模板
還有一種通用的方法是使用模板來傳遞數組參數:
template <std::size_t SIZE>
void func(int (&arr)[SIZE]) {
// ...
}
以上代碼中,SIZE
是數組的長度,我們可以使用模板來自動推導數組長度。
四、傳遞動態數組
以上三種方法適用於靜態數組,也就是數組長度是固定的。如果我們要傳遞動態數組,可以使用指針或者引用:
void func(int *arr, int length) {
// ...
}
void func(std::vector<int>& arr) {
// ...
}
以上代碼中,第一個函數接收一個指向整型數組的指針 arr
和數組長度 length
,第二個函數接收一個 std::vector<int>
的引用 arr
。在這兩種情況下,我們都可以使用函數中的參數來操作數組元素。
總結
以上就是為C++函數傳遞數組參數的幾種方法。根據不同的需求,我們可以選擇合適的方法來操作數組。需要注意的是,在傳遞數組指針時,對數組元素的修改會影響原數組。
完整示例代碼
#include <iostream>
#include <vector>
template <std::size_t SIZE>
void staticArray(int (&arr)[SIZE]) {
for (std::size_t i = 0; i < SIZE; ++i) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
void dynamicArray(int *arr, int length) {
for (int i = 0; i < length; ++i) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
void vectorArray(std::vector<int>& arr) {
for (std::size_t i = 0; i < arr.size(); ++i) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
int main() {
// 靜態數組
int arr1[] = {1, 2, 3, 4, 5};
staticArray(arr1);
// 動態數組
int *arr2 = new int[5]{6, 7, 8, 9, 10};
dynamicArray(arr2, 5);
delete[] arr2;
// std::vector
std::vector<int> arr3{11, 12, 13, 14, 15};
vectorArray(arr3);
return 0;
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/206948.html