Rumah  >  Artikel  >  pembangunan bahagian belakang  >  \"const int\" vs. \"int const\" dalam C dan C: Adakah Mereka Benar-benar Sama?

\"const int\" vs. \"int const\" dalam C dan C: Adakah Mereka Benar-benar Sama?

DDD
DDDasal
2024-10-27 02:06:30689semak imbas

'const int' vs. 'int const' sebagai Parameter Fungsi dalam C dan C

Apabila mengisytiharkan parameter fungsi dengan const, adalah penting untuk membezakan antara 'const int ' dan 'int const'. Walaupun mereka mungkin kelihatan sama, susunan pengubah mengubah tafsiran pengisytiharan.

'const int' mengisytiharkan pembolehubah yang malar (tidak boleh diubah suai) dan jenis int. Penekanan di sini adalah pada kelayakan const yang digunakan pada pembolehubah.

'int const', sebaliknya, mengisytiharkan pembolehubah yang jenis int dan juga malar. Dalam kes ini, kelayakan const mengubah suai jenis, bukan pembolehubah.

Jadi, adakah kedua-dua fungsi ini sama?

<code class="c">int testfunc1 (const int a) { return a; }
int testfunc2 (int const a) { return a; }</code>

Ya, ia adalah setara. Membaca pengisytiharan ke belakang menjelaskan perkara ini.

Untuk 'const int':

  • "a" ialah integer yang "malar".

Untuk 'int const':

  • "a" ialah " integer malar".

Dalam kedua-dua kes, "a" ialah integer dan pemalar.

Walau bagaimanapun, helah membaca ke belakang menjadi tidak ternilai dalam pengisytiharan yang rumit:

<code class="c">// "s" is a pointer to a char that is constant
const char *s;

// "t" is a constant pointer to a char
char *const t = &c;

// The char in "s" is constant, so you can't modify it
*s = 'A'; // Can't do

// The pointer in "s" is not constant, so you can modify it
s++; // Can do

// The char in "t" is not constant, so you can modify it
*t = 'A'; // Can do

// The pointer in "t" is constant, so you can't modify it
t++; // Can't do</code>

Ingat, dalam C , ahli data const boleh dimulakan sama ada dalam pengisytiharan kelas atau dalam pembina. Manakala dalam C, ahli data const dianggap sebagai pemalar simbolik dan mesti dimulakan dalam pengisytiharan, yang menjadikannya sangat hampir dengan #define.

Atas ialah kandungan terperinci \"const int\" vs. \"int const\" dalam C dan C: Adakah Mereka Benar-benar Sama?. 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