Rumah > pembangunan bahagian belakang > C++ > Mengapa Menambah Penunjuk Integer dalam C Bertambah sebanyak 4 Bait?

Mengapa Menambah Penunjuk Integer dalam C Bertambah sebanyak 4 Bait?

Mary-Kate Olsen
Lepaskan: 2024-11-29 22:37:14
asal
927 orang telah melayarinya

Why Does Incrementing an Integer Pointer in C Increase by 4 Bytes?

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);
Salin selepas log masuk

Dijangka Output:

0xBF8D63B8
0xBF8D63B9
Salin selepas log masuk

Output Sebenar:

0xBF8D63B8
0xBF8D63BC
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan