Menambah Penunjuk Int dalam C: Menyingkap Penambahan 4-Byte
Dalam C, peraturan aritmetik penunjuk menentukan bahawa penambahan int akan menghasilkan penunjuk dalam kenaikan 4-bait, bukannya kenaikan 1-bait yang dijangkakan. Percanggahan ini telah membingungkan ramai pengaturcara, yang membawa kepada soalan seperti:
S: Mengapa penunjuk int ' ' meningkat sebanyak 4 berbanding 1?
J: Kenaikan penuding int sebanyak 4 bait adalah berkaitan dengan saiz jenis data yang ditunjukkannya. Setiap pembolehubah int menduduki 4 bait memori, jadi dengan menambah penuding int menggerakkan penuding ke int seterusnya, yang terletak 4 bait jauhnya dalam ingatan.
Kod Ujian:
int a = 1, *ptr; ptr = &a; printf("%p\n", ptr); ptr++; printf("%p\n", ptr);
Dijangka Output:
0xBF8D63B8 0xBF8D63B9
Output Sebenar:
0xBF8D63B8 0xBF8D63BC
Perbezaan dalam output adalah disebabkan oleh kenaikan 4-bait. Walaupun output yang dijangkakan menunjukkan peningkatan sebanyak 1 bait, output sebenar menunjukkan lompatan 4-bait, yang membawa kepada lonjakan ketara dalam alamat memori.
Soalan Tambahan: Melawat Int Bytes Secara Individu
S: Bagaimana untuk melawati 4 bait yang diduduki oleh int satu dengan satu?
J: Untuk mengakses bait individu int, anda boleh menghantar penuding int ke penuding aksara, yang mempunyai saiz 1 bait. Kemudian, anda boleh menambah penunjuk char untuk menavigasi melalui bait int.
Contoh:
int i = 0; int* p = &i; char* c = (char*)p; char x = c[1]; // one byte into an int
Dalam contoh ini, bait pertama int pembolehubah i diakses menggunakan ungkapan c[1]. Anda boleh menambah penuding c untuk mengakses bait seterusnya dalam int.
Memahami peraturan aritmetik penunjuk untuk jenis data yang berbeza adalah penting untuk memastikan pengendalian memori yang betul dalam pengaturcaraan C. Dengan memahami sebab di sebalik kenaikan 4-bait untuk penunjuk int, anda boleh menghalang perangkap biasa dan menulis kod yang lebih cekap.
Atas ialah kandungan terperinci Mengapa Menambah Penunjuk Integer dalam C Bertambah sebanyak 4 Bait?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!