21xrx.com
2024-12-27 20:54:04 Friday
登录
文章检索 我的文章 写文章
C++中如何传递二维数组作为函数参数
2023-07-02 13:54:59 深夜i     --     --
C++ 传递二维数组 函数参数 多维数组 指针 数组长度

C++中,传递二维数组作为函数参数是一项重要的任务,因为它可以帮助程序员提高程序的性能和可扩展性。下面是几种传递二维数组的方法:

方法一:使用指针

一种方法是将二维数组转换为指针,然后将指针传递给函数。这种方法需要使用指针运算符和指针类型转换符,如下所示:


void func(int* arr, int rows, int cols) {

  for (int i = 0; i < rows; i++) {

    for (int j = 0; j < cols; j++) {

      cout << *(arr + i*cols + j) << " ";

    }

    cout << endl;

  }

}

int main() {

  int arr[3][4] = {3, 5, 11};

  func((int*)arr, 3, 4);

}

方法二:使用C++标准库

C++标准库提供了一个名为vector的容器类,它可以方便地处理多维数组。可以将vector容器作为函数参数传递。如下所示:


void func(vector<vector<int>> arr) {

  for (int i = 0; i < arr.size(); i++) {

    for (int j = 0; j < arr[i].size(); j++) {

      cout << arr[i][j] << " ";

    }

    cout << endl;

  }

}

int main() {

  vector<vector<int>> arr = {2, 5, 7};

  func(arr);

}

方法三:使用动态数组

动态数组是一种创建和释放内存的方法,可以使用new和delete运算符分配和释放内存。可以使用动态数组来传递二维数组,如下所示:


void func(int** arr, int rows, int cols) {

  for (int i = 0; i < rows; i++) {

    for (int j = 0; j < cols; j++) {

      cout << arr[i][j] << " ";

    }

    cout << endl;

  }

}

int main() {

  int** arr = new int*[3];

  for (int i = 0; i < 3; i++) {

    arr[i] = new int[4];

  }

  arr[0][0] = 1; arr[0][1] = 2; arr[0][2] = 3; arr[0][3] = 4;

  arr[1][0] = 5; arr[1][1] = 6; arr[1][2] = 7; arr[1][3] = 8;

  arr[2][0] = 9; arr[2][1] = 10; arr[2][2] = 11; arr[2][3] = 12;

  func(arr, 3, 4);

  for (int i = 0; i < 3; i++) {

    delete [] arr[i];

  }

  delete [] arr;

}

总之,在C++中传递二维数组作为函数参数有多种方法。使用指针、C++标准库或动态数组都可以完成这个任务。选择哪种方法取决于具体情况,例如数组大小、程序的性能要求和可扩展性。记住在使用指针或动态数组时要小心内存泄漏的问题,以避免程序出现错误。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复