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

อธิบายอาร์เรย์ของพอยน์เตอร์ในภาษาการเขียนโปรแกรม C


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

คุณสมบัติ

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

การประกาศตัวชี้และการเริ่มต้น

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

int qty = 179;

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

อธิบายอาร์เรย์ของพอยน์เตอร์ในภาษาการเขียนโปรแกรม C

การประกาศตัวชี้

หมายความว่า '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