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

Mengapakah Pengisytiharan Tatasusunan C Memerlukan Ungkapan Nilai Malar?

Barbara Streisand
Barbara Streisandasal
2024-12-07 03:34:12787semak imbas

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];

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;

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];

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!

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