如何為C++函數傳遞數組參數

一、傳遞數組指針

在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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-08 14:18
下一篇 2024-12-08 14:19

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字元串操作中,capitalize函數常常被用到,這個函數可以使字元串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • 三星內存條參數用法介紹

    本文將詳細解釋三星內存條上面的各種參數,讓你更好地了解內存條並選擇適合自己的一款。 一、容量大小 容量大小是內存條最基本的參數,一般以GB為單位表示,常見的有2GB、4GB、8GB…

    編程 2025-04-29
  • 單片機列印函數

    單片機列印是指通過串口或並口將一些數據列印到終端設備上。在單片機應用中,列印非常重要。正確的列印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的列印數據可以幫助我們快速…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29

發表回復

登錄後才能評論