Rumah > pembangunan bahagian belakang > C++ > Mengapakah Pengisytiharan Tatasusunan C Memerlukan Ungkapan Nilai Malar?

Mengapakah Pengisytiharan Tatasusunan C Memerlukan Ungkapan Nilai Malar?

Barbara Streisand
Lepaskan: 2024-12-07 03:34:12
asal
787 orang telah melayarinya

Why Do C   Array Declarations Require Constant Value Expressions?

Pengisytiharan Tatasusunan dalam C : Memahami Ungkapan Nilai Malar

Dalam C , apabila cuba mencipta tatasusunan berdasarkan dimensi berubah, seperti:

int row = 8;
int col = 8;
int [row][col];
Salin selepas log masuk

ralat seperti "ungkapan mesti mempunyai nilai tetap" mungkin timbul. Ralat ini berlaku kerana saiz tatasusunan mesti ditetapkan pada masa penyusunan.

Untuk menangani isu ini, terdapat dua pilihan:

1. Peruntukan Tatasusunan Dinamik:

Untuk tatasusunan bersaiz dinamik, adalah perlu untuk memperuntukkan memori pada timbunan dan mengurus peruntukan dan deallocationnya secara manual. Ini boleh dilakukan seperti berikut:

// Allocate the array
int** arr = new int*[row];
for (int i = 0; i < row; i++) {
    arr[i] = new int[col];
}

// Use the array

// Deallocate the array
for (int i = 0; i < row; i++) {
    delete[] arr[i];
}
delete[] arr;
Salin selepas log masuk

2. Tatasusunan Diisytiharkan Pemalar:

Jika saiz tatasusunan ditetapkan, ia boleh diisytiharkan menggunakan pemalar:

const int row = 8;
const int col = 8;
int arr[row][col];
Salin selepas log masuk

Dalam contoh pertama, pengisytiharan tatasusunan tidak mempunyai nama pembolehubah, yang mana akan menyebabkan ralat penyusunan berasingan. Selain itu, pengkompil memerlukan ungkapan nilai malar untuk pengisytiharan saiz tatasusunan untuk memastikan sempadan yang diketahui secara statik dan pengurusan sumber yang dioptimumkan.

Atas ialah kandungan terperinci Mengapakah Pengisytiharan Tatasusunan C Memerlukan Ungkapan Nilai Malar?. 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