โครงสร้างข้อมูลแบบอาร์เรย์ เรคคอร์ด และพอยเตอร์
1. ลักษณะของ Arrays
     อะเรย์ เป็นโครงสร้างข้อมูลที่เรียกว่า Linear List มีลักษณะคล้ายเซ็ตในคณิตศาสตร์ คือ อะเรย์ประกอบด้วยสมาชิกที่มีจำนวนคงที่ มีรูปแบบข้อมูลเป็นแบบเดียวกันกับสมาชิกแต่ละตัวใช้เนื้อที่จัดเก็บที่มี ขนาดเท่ากันเรียงต่อเนื่องในหน่วยความจำหลัก อะเรย์ถือเป็นโครงสร้างข้อมูลแบบสแตติค (Static Data Structure) โดยอะเรย์จะมีขนาดคงที่เป็นแถวลำดับแบบอันดับ ที่ประกอบด้วยชุดตัวแปรที่เป็นช่องหลายๆช่องที่มีชื่อเดียวกัน สำหรับใช้เก็บข้อมูลชนิดเดียวกัน โดยข้อมูลที่อยู่ในช่องเรียกว่า เป็นสมาชิกของอะเรย์
    แถวลำดับแบบอันดับ (Ordered List) เป็นรูปแบบของการจัดเก็บข้อมูลเข้าไว้ด้วยกันแบบเรียงลำดับหรือเป็นแถวเส้น ตรง
    ตัวอย่าง เช่น                                                                                        
(A,B,C,D.....Z) เป็นแถวลำดับแบบอันดับของตัวอักษรภาษาอังกฤษ
    อะเรย์มีคุณสมบัติหลักๆดังนี้
·         มีขนาดคงที่
·         ข้อมูลที่จัดเก็บแสดง ผลออกมาแบบเรียง ลำดับ
·         สามารถดึงสมาชิกลำดับ ที่ i ใดๆ ออกมาได้
·         สามารถเพิ่มสมาชิกใหม่ เข้าไปในแถวลำดับ ได้
·         สามารถแทนที่สมาชิก ลำดับที่ i ใดๆได้
·         สามารถลบสมาชิกที่มี อยู่ออกจากแถวลำดับ ได้
2. การเข้าถึงข้อมูลใน Arrays
    โครงสร้างข้อมูลแบบอะเรย์ เป็นโครงสร้างข้อมูลที่มีการจองพื้นที่หน่วยความจำ เป็นชุดๆ แต่ละชุดประกอบด้วยจำนวนช่งข้อมูลหลายช่อง พื้นที่แต่ละช่องข้อมูลจะอยู่ในตำแหน่งที่ต่อเนื่องกันไปตามลำดับ  การเข้าถึงข้อมูล (Access) ข้อมูลใดๆ ในโครงสร้างสามารถกระทำได้โดยการระบุหมายเลขกำกับช่องข้อมูลที่เรียกว่า ตัวดัชนี (Index) หรือบางครั้งเรียกว่า ตัวชี้ หรือซัปสคริปต์ (Sub Scipt)
3. Arrays หลายมิติ
    การจัดเก็บอะเรย์ในหน่วยความจำหลัก จะใช้เนื้อที่ขนาดเท่ากัน เพื่อเก็บสมาชิกแต่ละตัว โดยเนื้อที่จะเรียงต่อเนื่องกัน การจัดเก็บอะเรย์ในหน่วยความจำหลัก จะพิจารณาตามประเภทของอะเรย์ในมิติต่างๆ ดังนี้
·             โครงสร้างข้อมูลอะเรย์หนึ่งมิติ (One-Dimensional Array)
·             โครงสร้างข้อมูลอะ เรย์สองมิติ (Two-Dimensional Array)
·             โครงสร้างข้อมูลอะเรย์สามมติ (Three-Dimensional Array)
    รูปแบบ
Array [l...u]                                  แถวลำดับ 1 มิติ
Array [l1..u1,l2...u2]                      แถวลำดับ 2 มิติ
Array [l1..u1,l2..u2,l3..u3]              แถวลำดับ 3 มิติ
    3.1 โครงสร้างข้อมูลอะเรย์หนึ่งมิติ (One-Dimensional Array)
คือ โครงสร้างข้อมูลแถวลำดับที่มีการจัดเก็บข้อมูลต่อเนื่องกันไปเป็นแถวต่อ เนื่องกันตลอด ซึ่งเปรียบเหมือนกับตารางแถวเดียว โดยมีดัชนีอ้างอิงเพียง 1 ตัว
    รูปแบบ
·         Data-type   array-name[expressino]
       Data-type  คือ ประเภทของข้อมูลอะเรย์ เช่น int,char,float
       array-name  คือ ชื่อของอะเรย์
       expression  คือ นิพจน์จำนวนเต็มซึ่งระบุจำนวนสมาชิกของอะเรย์
    ตัวอย่าง        char  a[4];         int  num[10];
    char a[4]];  หมายถึง  คอมพิวเตอร์จะจองเนื้อที่ในหน่วยความจำสำหรับตัวแปร a ให้เป็นตัวแปรชุดชนิด character ขนาดสมาชิก 4 สมาชิก โดยหน่วยความจำจะเตรียมเนื้อที่ให้ 1 byte สำหรับ 1 ชื่อตัวแปร
    Initialization คือ การกำหนดค่าเริ่มต้นให้กับอะเรย์
1. การกำหนดค่าให้กับตัวแปรชุดที่มีค่าเป็นตัวเลข
    รูปแบบ    data-type   array-name[n]={value1,value2...value n};
    ตัวอย่าง
    int  num[5] = {1,2,3,4,5};  หรือ
    int  num[]   = {1,2,3,4,5};  หรือ
    int  x[6]      = {0,0.25,0,0.5,0,0};
2. การกำหนดค่าให้กับตัวแปรชุด ชนิด Character
    รูปแบบ    char   array-name[n] = "string";
    ตัวอย่าง
    char  ch[9] = "SAWASDEE";
    สามารถกำหนดอะเรย์  เป็นพารามิเตอร์ส่งให้กับฟังก์ชันได้ 2 ลักษณะ
    1. การกำหนด array element เป็นพารามิเตอร์ส่งค่าให้กับฟังก์ชัน ทำได้โดยอ้างถึงชื่ออะเรย์พร้อมระบุ subscript
       ตัวอย่าง
       swap(num[2],num[3]);
    2. ส่งอะเรย์ทั้งชุดให้ฟังก์ชัน ทำได้โดยอ้างถึงชื่ออะเรย์ โดยไม่มี subscript
       ตัวอย่าง
       #define N 10
       float a[N]; float avg;
       avg = average(N,a);
      การส่งผ่านอะเรย์ให้กับฟังก์ชันเป็นการส่งผ่านโดยการอ้างอิงเรียกว่า Pass by reference คือ ค่าของสมาชิกแต่ละตัวจะไม่ได้ถูกส่งไปให้ฟังก์ชันแต่ชื่อของอะเรย์จะถูกมอง เป็นตำแหน่งในหน่วยความจำที่ใช้เก็บสมาชิกตัวแรกซึ่ง address นี้จะถูกส่งให้กับอาร์กิวเมนต์ที่ตรงกัน  ดังนั้น อาร์กิวเมนต์จึงเป็น pointer ชี้ไปยังสมาชิกตัวแรกของอะเรย์
    3.2 โครงสร้างข้อมูลแบบอะเรย์สองมิติ (Two-Dimensional Array)
คือ โครงสร้างข้อมูลที่มีการจัดเก็บข้อมูลแบบตารางสองทางข้อมูลมีการจัดเรียงกัน ตามแนวแถว(Row) และแนวหลัก(Column) การอ้างถึงข้อมูลต้องระบุตำแหน่งแถวและตำแหน่งหลักที่ข้อมูลนั้นอยู่
    รูปแบบ
    type   array-name[n] [m];
    type     หมายถึง  ชนิดของตัวแปรที่ต้องการประกาศเป็นอะเรย์
    array-name    หมายถึง  ชื่อของตัวแปรที่ต้องการประกาศเป็นอะเรย์
    n         หมายถึง  ตัวเลขที่แสดงตำแหน่งของแถว
    m        หมายถึง  ตัวเลขที่แสดงตำแหน่งของหลัก
    3.3  โครงสร้างข้อมูลอะเรย์สามมิติ (Three-Dimensional Array)
อะเรย์ 3 มิติ A[l1:u1 , l2:u2 , l3:u3] เป็นอะเรย์ที่มี lower bound และ upper bound
    สูตรการคำนวณหาจำนวนสมาชิกของ Array 3 มิติ
A[L1...U1,L2...U2,L3...U3] = (U1-L1+1)*(U2-L2+1)*(U3-L3+1)
4. Pointers และ Arrays ของ Pointers
    Pointer เป็นตัวแปรชนิดหนึ่งที่ทำหน้าที่เก็บตำแหน่งที่อยู่ (Address) ของตัวแปรที่อยู่ในหน่วยความจำ
    การประกาศชนิดของตัวแปรพอยน์เตอร์
   รูปแบบ
    type   *variable-name
    type                        หมายถึง  ชนิดของตัวแปร
    *                              หมายถึง  เป็นเครื่องหมายที่แสดงว่าตัวแปรที่ตามหลังเครื่องหมายนี้เป็นตัวแปร พอยน์เตอร์
 variable-name         หมายถึง  เป็นชื่อของตัวแปรที่ต้องการประกาศว่าเป็นชนิด พอยน์เตอร์
    ตัวอย่าง
    char *prt;    หมายความว่า  ประกาศว่าตัวแปร prt เป็นตัวแปรพอยน์เตอรที่ใช้เก็บตำแหน่งเริ่มต้นที่จะเก็บ Character
    เครื่องหมาย ที่ใช้ทำงานกับตัวแปรพอยน์เตอร์
1.               เครื่องหมาย & เป็นเครื่องหมายที่ใช้เมื่อต้องการให้เอาค่าตำแหน่งที่อยู่ของตัวแปรที่เก็บ ไว้ในหน่วยความจำออกมาใช้ เช่น x = 10
2.               เครื่อง หมาย * มีการใช้งาน 2 ลักษณะ คือ ใช้ในการประกาศ parameter ว่าเป็นแบบพอยน์เตอร์ เช่น                                                                        void  swap(int *p,int*q)         
       {
          ......................
       }
       ใช้เป็น dereferencing  operator จะใช้เมื่อต้องการนำค่าที่อยู่ในตำแหน่งที่ตัวแปรพอยน์เตอร์นั้น ชี้อยู่ออกมาแสดง
    การใช้ตัวแปรพอยน์เตอร์กับอะเรย์ 
ตัว แปรพอยน์เตอร์จะใช้อ้างถึงค่าที่เก็บไว้ในตัวแปรชุดได้  ดังนี้
    ตัวอย่าง             char  str[80],*pl;
                           pl = str;
บรรทัด ที่ 1  เป็นการประกาศว่า str เป็นตัวแปรชุด ชนิด character 1 มิติ มีขนาดสมาชิก 80 สมาชิก และ pl เป็นตัวแปรพอยน์เตอร์
บรรทัด ที่ 2  เป็นการอ้างถึงข้อมูลที่เก็บไว้ในตัวแปรชุด str โดยการนำตำแหน่งที่อู่ของตัวแปร str[0] ซึ่งเป็นสมาชิกตัวแรกไปเก็บไว้ใน ตัวแปรพอยน์เตอร์ pl เหมือนกับใช้คำสั่ง        pl = &str[0];
     การ อ้างถึงตัวแปรชุด สามารถอ้างถึงโดยการเพิ่ม หรือลดตัวแปรพอยน์เตอร์ได้ เช่น ต้องการอ้างถึงตัวแปร str[4] ทำได้โดย *(pl+4)
    5. Records และโครงสร้างของ Records
    เป็นโครงสร้างข้อมูลที่ประกอบขึ้นมาจากข้อมูลพื้นฐาน ต่างประเภทกัน รวมเป็น 1 ชุดข้อมูล คือ จะประกอบด้วย data element หรือ field ต่างประเภทกันอยู่รวมกัน ในภาษา C ก็คือ การกำหนดข้อมูล เป็นรูปแบบของ Structure
    Structure คือ โครงสร้างที่สมาชิกแต่ละตัวมีประเภทข้อมูลแตกต่างกันได้ โดยที่ใน structure  อาจมีสมาชิกเป็นจำนวนเต็ม ทศนิยม อักขระ อะเรย์หรือพอยน์เตอร์ หรือแม้แต่ structure ด้วยกันก็ได้
   การนิยาม structure
   รูปแบบ       struct       struc-name {  
                                  type      *name-1;
                   type  name-2;
                   ..............................
                   type  name-n;
                   } struc-variable;
  struct   เป็น คำหลักที่ต้องมีเสมอ
  struc-name  ชื่อกลุ่ม structure       
  type  ชนิดของตัวแปรที่อยู่ในกลุ่ม structure
  name-n  ชื่อของตัวแปรที่อยู่ในกลุ่ม structure