ตัวชี้เป็นตัวแปรที่เก็บที่อยู่ของตัวแปรอื่น
คุณสมบัติ
- ตัวชี้ช่วยประหยัดพื้นที่หน่วยความจำ
- เวลาดำเนินการของตัวชี้เร็วขึ้นเนื่องจากการเข้าถึงตำแหน่งหน่วยความจำโดยตรง
- ด้วยความช่วยเหลือของพอยน์เตอร์ หน่วยความจำจะเข้าถึงได้อย่างมีประสิทธิภาพ กล่าวคือ มีการจัดสรรหน่วยความจำและจัดสรรคืนแบบไดนามิก
- พอยน์เตอร์ใช้กับโครงสร้างข้อมูล
การประกาศตัวชี้และการเริ่มต้น
พิจารณาข้อความต่อไปนี้ −
int qty = 179;
ในหน่วยความจำ ตัวแปรสามารถแสดงได้ดังนี้ −
การประกาศตัวชี้
หมายความว่า 'p' เป็นตัวแปรตัวชี้ซึ่งเก็บที่อยู่ของตัวแปรจำนวนเต็มอื่นดังที่แสดงด้านล่าง -
Int *p;
การเริ่มต้นของตัวชี้
ตัวดำเนินการที่อยู่ (&) ใช้เพื่อเริ่มต้นตัวแปรตัวชี้
ตัวอย่างเช่น − int qty =175;
int *p;
p=&qty;
อาร์เรย์ของพอยน์เตอร์
เป็นการรวบรวมที่อยู่ (หรือ) การรวบรวมตัวชี้
ประกาศ
ต่อไปนี้เป็นการประกาศอาร์เรย์ของพอยน์เตอร์ -
datatype *pointername [size];
ตัวอย่างเช่น
int *p[5];
มันแสดงถึงอาร์เรย์ของพอยน์เตอร์ที่สามารถเก็บที่อยู่องค์ประกอบจำนวนเต็มได้ 5 รายการ
การเริ่มต้น
'&' ใช้สำหรับการเริ่มต้น
ตัวอย่างเช่น
int a[3] = {10,20,30}; int *p[3], i; for (i=0; i<3; i++) (or) for (i=0; i<3,i++) p[i] = &a[i]; p[i] = a+i;
การเข้าถึง
ตัวดำเนินการทางอ้อม (*) ใช้สำหรับการเข้าถึง
ตัวอย่างเช่น
for (i=0, i<3; i++) printf ("%d", *p[i]);
ตัวอย่างโปรแกรม
รับด้านล่างเป็นโปรแกรมสำหรับอาร์เรย์ของพอยน์เตอร์ -
#include<stdio.h> main ( ){ int a[3] = {10,20,30}; int *p[3],i; for (i=0; i<3; i++) p[i] = &a[i]; printf ("elements of the array are \n"); for (i=0; i<3; i++) printf ("%d \t", *p[i]); }
ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
elements at the array are : 10 20 30
ตัวอย่างที่ 2
รับด้านล่างเป็นโปรแกรมสำหรับอาร์เรย์ของตัวชี้ไปยังสตริง -
#include <stdio.h> #include <stdlib.h> int main(void){ char *a[5] = {"one", "two", "three", "four", "five"}; int i; printf ( "the strings are at locations:\n"); for (i=0; i<5; i++) printf ("%d\n", a[i]); return 0; }
ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
The strings are at locations: 4210688 4210692 4210696 4210702 4210707