Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

พอยน์เตอร์ในภาษา C มีกี่ประเภท


ตัวชี้เป็นตัวแปรที่เก็บที่อยู่ของตัวแปรอื่น

ไวยากรณ์สำหรับพอยน์เตอร์มีดังนี้ −

pointer = &variable;

ประเภทของพอยน์เตอร์

พอยน์เตอร์แบ่งออกเป็น 8 ประเภท ดังนี้ −

  • ตัวชี้ค่าว่าง

  • ตัวชี้เป็นโมฆะ

  • ตัวชี้ไวด์

  • ตัวชี้ห้อย

  • ตัวชี้ที่ซับซ้อน

  • ตัวชี้ใกล้

  • ตัวชี้ไกล

  • ตัวชี้ขนาดใหญ่

ตัวชี้ค่า Null

คุณสร้างตัวชี้ null โดยกำหนดค่า null ในเวลาของการประกาศตัวชี้

วิธีนี้มีประโยชน์เมื่อคุณไม่ได้กำหนดที่อยู่ใดๆ ให้กับตัวชี้ ตัวชี้ค่าว่างมีค่า 0 เสมอ

ตัวอย่าง

ต่อไปนี้เป็นโปรแกรม C สำหรับตัวชี้ null -

#include <stdio.h>
int main(){
   int *ptr = NULL; //null pointer
   printf("The value inside variable ptr is:\n%d",ptr);
   return 0;
}

ผลลัพธ์

เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −

The value inside variable ptr is:
0

โมฆะพอยน์เตอร์

เป็นตัวชี้ที่ไม่มีประเภทข้อมูลที่เกี่ยวข้อง โมฆะพอยน์เตอร์สามารถเก็บที่อยู่ของประเภทใดก็ได้และสามารถพิมพ์เป็นประเภทใดก็ได้

เรียกอีกอย่างว่าตัวชี้ทั่วไปและไม่มีประเภทข้อมูลมาตรฐาน

มันถูกสร้างขึ้นโดยใช้คำหลักเป็นโมฆะ

ตัวอย่าง

ต่อไปนี้เป็นโปรแกรม C สำหรับตัวชี้โมฆะ -

#include <stdio.h>
int main(){
   void *p = NULL; //void pointer
   printf("The size of pointer is:%d\n",sizeof(p)); //size of p depends on compiler
   return 0;
}

ผลลัพธ์

เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −

The size of pointer is:8

ไวลด์พอยน์เตอร์

ไวด์พอยน์เตอร์เรียกอีกอย่างว่าพอยน์เตอร์ที่ไม่ได้กำหนดค่าเริ่มต้น เพราะมันชี้ไปที่ตำแหน่งหน่วยความจำโดยอำเภอใจและอาจทำให้โปรแกรมขัดข้องหรือทำงานไม่ดี

ตัวชี้ C ประเภทนี้ไม่มีประสิทธิภาพ เนื่องจากอาจชี้ไปยังตำแหน่งหน่วยความจำที่ไม่รู้จักซึ่งอาจทำให้เกิดปัญหาในโปรแกรมของเรา ซึ่งอาจนำไปสู่การหยุดทำงานของโปรแกรม

ขอแนะนำให้ใช้ความระมัดระวังในขณะที่ทำงานกับตัวชี้ที่ไม่เหมาะสม

ตัวอย่าง

ต่อไปนี้เป็นโปรแกรม C สำหรับตัวชี้ไวด์ -

#include <stdio.h>
int main(){
   int *p; //wild pointer
   printf("\n%d",*p);
   return 0;
}
Process returned -1073741819 (0xC0000005) execution time : 1.206 s
Press any key to continue
i.e. you won’t get output, some compilers show error message at output