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
Lepaskan: 2024-12-08 15:36:13
asal
368 orang telah melayarinya

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;
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan