Rumah >pembangunan bahagian belakang >C++ >Mengapakah saya tidak boleh menetapkan tatasusunan secara langsung dalam C?

Mengapakah saya tidak boleh menetapkan tatasusunan secara langsung dalam C?

Patricia Arquette
Patricia Arquetteasal
2024-12-05 21:21:111028semak imbas

Why Can't I Directly Assign Arrays in C  ?

Mengapa Tatasusunan Tidak Boleh Ditugaskan dalam C

Dalam C, tatasusunan tidak boleh diberikan kepada tatasusunan lain secara langsung. Tingkah laku ini mungkin kelihatan pelik, tetapi ia disebabkan oleh warisan bahasa daripada C.

Mesej ralat "Ralat C2106: '=' : operan kiri mestilah nilai-l" menunjukkan bahawa operan kiri (dalam ini case, values) mestilah nilai-l, iaitu objek yang boleh diubah suai yang boleh ditugaskan kepada. Walau bagaimanapun, tatasusunan tidak dianggap sebagai nilai-l dalam C .

Sebab Tatasusunan Tidak Boleh Ditugaskan

Tatasusunan C tidak boleh ditetapkan atas beberapa sebab:

  • Keserasian Legasi: Tatasusunan dalam C adalah serasi ke belakang dengan C tatasusunan, yang telah dilaksanakan sebagai penunjuk dan tidak boleh ditetapkan secara langsung.
  • Saiz Tatasusunan: Tatasusunan mempunyai saiz tetap setelah diisytiharkan. Menugaskan satu tatasusunan kepada yang lain memerlukan perubahan saiz tatasusunan, yang tidak dibenarkan dalam C .

Penyelesaian Alternatif

Untuk bekerja dengan tatasusunan dalam C , terdapat beberapa penyelesaian alternatif:

  • std::array dan std::vector: C menawarkan bekas moden seperti std::array dan std::vector. Bekas ini membenarkan tugasan dan saiz semula, masing-masing.
  • Penyalinan Berasaskan Gelung: Sebagai langkah terakhir, anda boleh menyalin elemen secara manual antara tatasusunan menggunakan gelung.

Contoh:

#include <algorithm>

// Original arrays
int numbers[5] = {1, 2, 3};
int values[5] = {};

// Copying elements using std::copy
std::copy(numbers, numbers + 5, values);

Sebagai alternatif, menggunakan std::array:

#include <array>

// Modern arrays
std::array<int, 5> numbers = {1, 2, 3};
std::array<int, 5> values = {};

// Assignment
values = numbers;

Atas ialah kandungan terperinci Mengapakah saya tidak boleh menetapkan tatasusunan secara langsung dalam 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