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

การทำงานของพอยน์เตอร์และปัญหาต่าง ๆ ของพอยน์เตอร์ในภาษา C คืออะไร?


ตัวชี้คือตัวแปรที่มีค่าเป็นที่อยู่ของตัวแปรอื่น เช่น ที่อยู่ตรงของตำแหน่งหน่วยความจำ เช่นเดียวกับตัวแปรหรือค่าคงที่ใดๆ คุณต้องประกาศตัวชี้ก่อนที่จะใช้เพื่อเก็บที่อยู่ของตัวแปร

พิจารณาข้อความต่อไปนี้ −

int จำนวน =179;

การแสดงตัวแปรในหน่วยความจำมีดังนี้ −

การทำงานของพอยน์เตอร์และปัญหาต่าง ๆ ของพอยน์เตอร์ในภาษา C คืออะไร?

คุณสามารถประกาศตัวชี้ได้ดังนี้ -

Int *p;

หมายความว่า 'p' เป็นตัวแปรตัวชี้ที่เก็บที่อยู่ของตัวแปรจำนวนเต็มอื่น

ตัวดำเนินการที่อยู่ (&) ใช้เพื่อเริ่มต้นตัวแปรตัวชี้

ตัวอย่างเช่น −

int qty =175;int *p;p=&qty;

การทำงานของพอยน์เตอร์และปัญหาต่าง ๆ ของพอยน์เตอร์ในภาษา C คืออะไร?

ในการเข้าถึงค่าของตัวแปร จะใช้ตัวดำเนินการทางอ้อม (*)

ตัวอย่างเช่น −

การทำงานของพอยน์เตอร์และปัญหาต่าง ๆ ของพอยน์เตอร์ในภาษา C คืออะไร?

'*' สามารถใช้เป็นค่าที่อยู่ได้

ข้อความทั้งสองนี้เทียบเท่ากับข้อความต่อไปนี้ -

<ก่อน> p =&qty; n =*p; n =จำนวน

การทำงานของตัวชี้ที่แตกต่างกัน

อธิบายการทำงานของตัวชี้ในภาษา C ด้านล่าง -

  • งานที่มอบหมาย − เราสามารถกำหนดที่อยู่ให้กับตัวชี้โดยใช้ &(ตัวดำเนินการที่อยู่)

  • การหาค่า − ไม่มีอะไรเลยนอกจาก dereference โดยที่ตัวดำเนินการ * ให้ค่าที่เก็บไว้ในตำแหน่งที่ชี้ไปยังตำแหน่ง

  • การใช้ที่อยู่ตัวชี้ − เช่นเดียวกับตัวแปรอื่นๆ ตัวแปรพอยน์เตอร์มีทั้งที่อยู่และค่า ด้วยความช่วยเหลือของโอเปอเรเตอร์ที่อยู่ เราสามารถค้นหาได้เมื่อตัวชี้ถูกเก็บไว้

  • การเพิ่มจำนวนเต็มให้กับตัวชี้ − เราสามารถใช้ตัวดำเนินการ + เพื่อเพิ่มจำนวนเต็มให้กับตัวชี้หรือตัวชี้ไปยังจำนวนเต็ม ในทั้งสองกรณี int จะถูกคูณด้วยจำนวนไบต์ในประเภทที่ชี้ไปที่ประเภท และผลลัพธ์จะถูกเพิ่มไปยังที่อยู่เดิม

  • การเพิ่มตัวชี้ − เป็นองค์ประกอบอาร์เรย์ที่ทำให้ย้ายไปยังองค์ประกอบถัดไปของอาร์เรย์

  • การลบ int จากพอยน์เตอร์ − เรากำลังใช้ตัวดำเนินการ – (ลบ) เพื่อลบจำนวนเต็มออกจากตัวชี้ จำนวนเต็มจะถูกคูณด้วยจำนวนไบต์ที่ชี้ไปที่ประเภท และผลลัพธ์จะถูกลบออกจากที่อยู่เดิม

  • ลดค่าตัวชี้ − ตัวชี้แบบลดค่า ชี้ไปที่ตำแหน่งก่อนหน้าแทนก่อนหน้านี้ เราสามารถใช้ทั้งแบบนำหน้าและแบบแก้ไขภายหลังสำหรับตัวดำเนินการลดค่า

  • การลบ − เราสามารถพบความแตกต่างของตัวชี้สองตัว โดยทั่วไปแล้ว เราเคยค้นหาว่าองค์ประกอบต่างกันอย่างไร

  • การเปรียบเทียบ − เราจะใช้ตัวดำเนินการเชิงสัมพันธ์เพื่อเปรียบเทียบค่าของพอยน์เตอร์สองตัว

ตัวอย่าง

รับด้านล่างเป็นโปรแกรมที่จะแสดงการทำงานของการดำเนินการของตัวชี้ในภาษา C -

#includemain ( ){ int x,y; //ประกาศตัวชี้ int *p; clrscr ( ); x=10; //การกำหนดค่าให้กับตัวชี้ p =&x; y=*p; printf ("ค่าของ x =%d", x); printf ("x ถูกเก็บไว้ที่ที่อยู่ %u", &x); printf ("ค่าของ x โดยใช้ตัวชี้ =%d", *p); printf ("ที่อยู่ของ x โดยใช้ตัวชี้ =%u", p); printf (“ค่าของ x ใน y =%d", y); *p =25; printf ("ตอนนี้ x =%d", x) getch ( );}

ผลลัพธ์

เมื่อคุณรันโปรแกรมดังกล่าว คุณจะได้รับผลลัพธ์ต่อไปนี้ -

ค่าของ x =10x ถูกเก็บไว้ที่ address =5000Address ของ x โดยใช้ตัวชี้ =10Address ของ x โดยใช้ตัวชี้ =5000Value of x ใน y =10Now x =25