Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengembalikan Tatasusunan 2D daripada Fungsi C?

Bagaimanakah Saya Boleh Mengembalikan Tatasusunan 2D daripada Fungsi C?

Linda Hamilton
Linda Hamiltonasal
2024-12-08 15:36:13345semak imbas

How Can I Return a 2D Array from a C   Function?

Mengembalikan Tatasusunan 2D dalam Fungsi C

Dalam C , apabila bekerja dengan tatasusunan dan fungsi, selalunya perlu mengembalikan tatasusunan berbilang dimensi. Artikel ini menangani persoalan khusus tentang cara mengembalikan tatasusunan 2D daripada fungsi dalam C .

Percubaan kod yang disediakan, MakeGridOfCounts(), bertujuan untuk mengembalikan tatasusunan 2D tetapi gagal disebabkan oleh pereputan tatasusunan. Sebaliknya, untuk mengembalikan tatasusunan 2D dengan betul, penuding kepada tatasusunan mesti dikembalikan.

Mencipta Tatasusunan 2D Secara Dinamik

Untuk mengatasi had tatasusunan statik, C menawarkan cara untuk mencipta tatasusunan berbilang dimensi secara dinamik. Kod berikut menunjukkan cara mencipta tatasusunan 2D baharu pada timbunan:

int** create2DArray(unsigned height, unsigned width) {
  int** array2D = 0;
  array2D = new int*[height];

  for (int h = 0; h < height; h++) {
    array2D[h] = new int[width];

    for (int w = 0; w < width; w++) {
      // fill in some initial values
      array2D[h][w] = w + width * h;
    }
  }

  return array2D;
}

Fungsi ini mengambil dua parameter, ketinggian dan lebar serta mengembalikan penuding kepada tatasusunan 2D yang baru dibuat saiz [tinggi x lebar ].

Mengembalikan Penunjuk

Untuk mengembalikan tatasusunan 2D yang dicipta secara dinamik daripada fungsi, a penunjuk kepada tatasusunan dikembalikan. Penunjuk ini menunjuk kepada elemen pertama tatasusunan dan menyediakan akses kepada keseluruhan tatasusunan:

int** MakeGridOfCounts() {
  int** cGrid = create2DArray(6, 6);
  return cGrid;
}

Pembersihan Memori

Apabila bekerja dengan tatasusunan yang diperuntukkan secara dinamik, adalah penting untuk diingat untuk membersihkan ingatan selepas digunakan. Jika tidak, kebocoran memori boleh berlaku:

for (int h = 0; h < height; h++) {
  delete[] my2DArray[h];
}
delete[] my2DArray;
my2DArray = 0;

Kesimpulan

Dengan mengikut teknik yang digariskan di atas, anda boleh mengembalikan tatasusunan 2D daripada fungsi dalam C . Ingat untuk mencipta tatasusunan secara dinamik untuk mengelakkan pengehadan dengan tatasusunan statik dan membersihkan memori yang diperuntukkan selepas digunakan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengembalikan Tatasusunan 2D daripada Fungsi C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn