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

อธิบายแนวคิดของพอยน์เตอร์และอาร์เรย์ในภาษาซี


พอยน์เตอร์และอาร์เรย์

คอมไพเลอร์จะจัดสรรตำแหน่งหน่วยความจำอย่างต่อเนื่องสำหรับองค์ประกอบทั้งหมดของอาร์เรย์

ที่อยู่ฐานคือตำแหน่งขององค์ประกอบแรกในอาร์เรย์

ตัวอย่างเช่น int a [5] ={10, 20,30,40,50};

ห้าองค์ประกอบจะถูกเก็บไว้ดังนี้ -

อธิบายแนวคิดของพอยน์เตอร์และอาร์เรย์ในภาษาซี

ถ้า 'p' ถูกประกาศเป็นตัวชี้จำนวนเต็ม อาร์เรย์ 'a' สามารถชี้ได้โดยการกำหนดต่อไปนี้ -

p=a
or
p=&a[0];

แต่ละค่าของ 'a' สามารถเข้าถึงได้โดยใช้ p ++ เพื่อย้ายจากองค์ประกอบหนึ่งไปยังอีกองค์ประกอบหนึ่ง เมื่อตัวชี้เพิ่มขึ้น ค่าของตัวชี้จะเพิ่มขึ้นตามขนาดของประเภทข้อมูลที่ชี้ไป ความยาวนี้เรียกว่า “ตัวประกอบมาตราส่วน”

ความสัมพันธ์ระหว่างตัวชี้ p และตัวแปร a แสดงไว้ด้านล่าง -

P   = &a[0] = 1000
P+1 = &a[1] = 1004
P+2 = &a[2] = 1008
P+3 = &a[3] = 1012
P+4 = &a[4] = 1016

ที่อยู่ขององค์ประกอบคำนวณโดยใช้ดัชนีและตัวประกอบสเกลของประเภทข้อมูล

ตัวอย่าง

ที่อยู่ของ a[3]=base address+(3*scale factor of int)

=1000+(3*4)

=1000+12

=1012

*(p+3) gives the value of a[3]
a[i] = *(p+i)

โปรแกรม

#include<stdio.h>
main (){
   int a[5];
   int *p,i;
   clrscr ();
   printf (”Enter 5 lements”);
   for (i=0; i<5; i++)
      scanf (“%d”, &a[i]);
   p = &a[0];
   printf (“Elements of the array are”);
   for (i=0; i<5; i++)
      printf(“%d”, *(p+i));
   getch();
}

ผลลัพธ์

Enter 5 elements : 10 20 30 40 50
Elements of the array are : 10 20 30 40 50