Rumah >pembangunan bahagian belakang >C++ >Mengapa C Memerlukan Saiz Tatasusunan Malar: 'Ungkapan Mesti Mempunyai Nilai Malar'?

Mengapa C Memerlukan Saiz Tatasusunan Malar: 'Ungkapan Mesti Mempunyai Nilai Malar'?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-11 08:51:15633semak imbas

Why Does C   Require Constant Array Sizes:

Saiz Tatasusunan Mesti Malar: "Ungkapan mesti mempunyai nilai tetap"

Apabila memulakan tatasusunan dalam C , saiz tatasusunan mesti diketahui pada masa penyusunan. Ini bermakna bahawa nilai untuk dimensi baris dan lajur tatasusunan mestilah ungkapan malar.

Pertimbangkan contoh berikut:

int row = 8;
int col = 8;
int [row][col]; // error: expression must have a constant value

Dalam kod ini, tatasusunan diisytiharkan tanpa menyatakan nama pembolehubah. Selain itu, pembolehubah baris dan kol bukan pemalar, jadi pengkompil tidak boleh menentukan saiz tatasusunan pada masa penyusunan. Ini mengakibatkan ralat "ungkapan mesti mempunyai nilai malar".

Anasusunan Diperuntukkan Secara Dinamik

Untuk mencipta tatasusunan bersaiz dinamik, memori mesti diperuntukkan pada timbunan menggunakan pengendali baru. Memori yang diperuntukkan mesti diagihkan menggunakan pemadaman untuk mengelakkan kebocoran memori.

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

Tatasusunan Saiz Tetap

Untuk tatasusunan saiz tetap, dimensi baris dan kol mesti diisytiharkan sebagai const:

const int row = 8;
const int col = 8;
int arr[row][col];

Atas ialah kandungan terperinci Mengapa C Memerlukan Saiz Tatasusunan Malar: 'Ungkapan Mesti Mempunyai 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