Rumah >pembangunan bahagian belakang >C++ >Adakah Penunjuk dalam C Mempunyai Saiz Tetap Tanpa mengira Jenis Data yang Ditunjukkan?

Adakah Penunjuk dalam C Mempunyai Saiz Tetap Tanpa mengira Jenis Data yang Ditunjukkan?

Patricia Arquette
Patricia Arquetteasal
2024-12-13 18:02:10348semak imbas

Do Pointers in C   Have a Fixed Size Regardless of the Data Type They Point To?

Memahami Saiz Penunjuk dalam C

Timbul persoalan, "Adakah saiz penunjuk bergantung pada saiz jenis yang ditunjukkannya , atau adakah penunjuk sentiasa mengekalkan saiz tetap?" Mari kita mendalami konsep ini, membina asas soalan pendua.

Dalam C , penunjuk biasanya mempunyai saiz tetap. Dalam boleh laku 32-bit, mereka biasanya menduduki 32 bit. Walau bagaimanapun, pengecualian wujud, seperti dalam versi Windows yang lebih lama, di mana penunjuk 16-bit dan 32-bit perlu dibezakan.

Pertimbangkan coretan kod berikut:

int x = 10;
int *xPtr = &x;
char y = 'a';
char *yPtr = &y;

std::cout << sizeof(x) << "\n";
std::cout << sizeof(xPtr) << "\n";
std::cout << sizeof(y) << "\n";
std::cout << sizeof(yPtr) << "\n";

Dalam ini senario, outputnya adalah seperti berikut:

  • saiz(x): Output saiz pembolehubah x, iaitu 4 untuk boleh laku 32-bit (dengan andaian int ialah 4 bait).
  • sizeof(xPtr): Mengeluarkan saiz pembolehubah penunjuk xPtr, yang biasanya kekal tetap seperti yang dinyatakan lebih awal, tanpa mengira jenis yang ditunjukkannya.
  • sizeof(y): Mengeluarkan saiz pembolehubah aksara y, iaitu biasanya 1 bait untuk satu aksara.
  • sizeof(yPtr): Serupa dengan xPtr, ia mengeluarkan saiz pembolehubah penunjuk yPtr, yang sama dengan xPtr.

Ia penting untuk ambil perhatian bahawa walaupun penunjuk biasanya mempunyai saiz yang konsisten, adalah tidak bijak untuk bergantung pada andaian ini dalam kod anda. Jika program anda bergantung pada penunjuk yang mempunyai saiz tertentu, sentiasa sahkannya dengan jelas.

Penunjuk fungsi ialah pengecualian yang ketara. Saiznya boleh berbeza-beza bergantung pada konvensyen panggilan yang digunakan oleh sistem atau pengkompil tertentu. Rujuk respons yang diberikan oleh 'Jens' untuk mendapatkan maklumat lanjut tentang penunjuk fungsi.

Atas ialah kandungan terperinci Adakah Penunjuk dalam C Mempunyai Saiz Tetap Tanpa mengira Jenis Data yang Ditunjukkan?. 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