Video: Innovating to zero! | Bill Gates 2024
Jika anda mempunyai tatasusunan dan anda tidak mahu kandungannya berubah, anda boleh menjadikannya array tetap. Baris kod berikut, yang terdapat dalam contoh Array05, menunjukkan pendekatan ini:
const int Permanent [5] = {1, 2, 3, 4, 5}; cout << kekal [1] << endl;
Arahan ini berfungsi seperti mana-mana array lain, kecuali anda tidak boleh mengubah nombor di dalamnya. Jika anda menambah garis seperti baris berikut, anda akan mendapat ralat pengkompil, kerana pengkompil menyedari pemalar:
Kekal [2] = 5;
Berikut ialah kesilapan yang anda dapati apabila anda mencuba ini dalam Kod:: Blok: ralat
: tugasan lokasi baca sahaja 'Tetap [2]'
Bagaimana pula dengan pelbagai penstabilan yang tidak tetap? Bolehkah anda berbuat demikian? Nah, kadangkala - bergantung kepada pengkompil. Sebagai mengerikan seperti kod berikut (terdapat dalam contoh Array06) kelihatan - dan itu bukan standard ANSI! - anda dibenarkan untuk melakukan ini dengan versi lama penyusun gcc. (Microsoft Visual C ++ dan Borland C ++ Builder tidak membenarkannya, dan Kod:: Pengompas blok memberikan anda ralat: mesej ralat penguntukan array tidak sah.)
int NonConstant [5] = {1, 2, 3, 4, 5}; int OtherList [5] = {10, 11, 12, 13, 14}; OtherList = NonConstant;
Dengan kata lain, baris ketiga itu berkata, "Lupakan apa yang disebut oleh OtherList; Sebaliknya, tunjukkan kepada array pertama, {1, 2, 3, 4, 5}! "Sekarang, anda benar tidak boleh menulis kod seperti ini (ingat, simpan perkara yang mudah dan mudah difahami), jadi jika anda ingin menghalang perkara seperti ini, ! - 3 ->
const int NonConstant [5] = {1, 2, 3, 4, 5}; const int OtherList [5] = {10, 11, 12, 13, 14}; OtherList = NonConstant;Sekarang, apabila pengkompil masuk ke baris ketiga, ia memberi anda ralat:
ralat: pembahagian pembolehubah read-only 'OtherList'
Tetapi anda mungkin dapat melihat bahawa cara anda membuat tetapan berteras adalah dengan cara yang sama bahawa anda membuat unsur-unsurnya tetap dalam kod yang datang tepat sebelum contoh ini. Oops! Apa itu? Ternyata terdapat beberapa peraturan.
Senarai berikut menerangkan peraturan, secara terperinci, untuk membuat tatasusunan tetap:
Jika anda ingin membuat pemalar pelbagai, anda boleh mendahului jenisnya dengan perkataan const. Apabila anda berbuat demikian, nama array adalah malar, dan unsur-unsur di dalam array adalah
-
juga malar. Oleh itu, anda tidak boleh mempunyai pelbagai berterusan dengan unsur-unsur yang tidak stabil, dan anda juga tidak boleh mempunyai pelbagai yang tidak stabil dengan unsur-unsur malar. Pengertian
-
array tidak stabil wujud hanya dalam gcc dan bukan ANSI-standard. Jika anda benar-benar ingin mendapatkan teknikal, standard C ++ ANSI mengatakan bahawa apabila anda meletakkan perkataan const di hadapan pernyataan array, anda tidak membuat pemalar pelbagai; anda mengatakan bahawa array memegang hanya pemalar.
Namun, apabila anda menggunakan cara ini, kebanyakan penyusun juga menjadikan array itu sendiri tetap. Tetapi itu baik-baik saja; orang tidak boleh mengambil nama pelbagai dan menyalinnya kepada sesuatu yang lain. Itu bukan gaya pengaturcaraan yang baik, dan ia hanya meminta bug - atau sekurang-kurangnya, kekeliruan - kemudian.