คราวนี้ผมจะมาเขียนเรื่องการใช้ Pointer เป็น Array
ปกติในภาษา C เวลาจะประกาศตัวแปรแบบ array เราจะประกาศเป็น
int a[5];
คือการประกาศตัวแปร a เป็น array ของ int มีสมาชิก 5 ตัว (0 - 4)
และเวลาที่เราจะประกาศ Pointer เราจะเขียนเป็น
int *b;
คือให้ b เป็น pointer ของ int
ในภาษา C ถ้าเราต้องการให้ pointer เป็น array เราจะต้องจองหน่วยความจำให้มันโดยใช้ฟังก์ชัน calloc
void* calloc(size_t num, size_t size);
ถ้าจะให้ b เป็น array ที่มีสมาชิก 5 ตัวเราจะเขียนว่า
b = (int*)calloc(5, sizeof(int));
และจะใช้
void free(void*);
ในการลบข้อมูลที่จองออก
free(b)
ในภาษา C++ เราสามารถเขียนอีกแบบหนึ่งได้
เวลาจะประกาศตัวแปร int แต่ต้องการให้เป็น pointer เราจะใช้คำสั่ง new ในการจองหน่วยความจำ
int *c = new int;
และเราจะใช้ คำสั่ง delete ลบค่าออก
delete c;
แต่ถ้าต้องการให้ตัวแปรเป็นแบบ array เราจะใส่จำนวนสมาชิกลงไปด้วย
int *d = new int[5];
คือการประกาศให้ d เป็น array ที่มีสมาชิก 5 ตัว
เห็นไหมครับว่าง่ายกว่าภาษา C เยอะเลย
เวลาจะลบข้อมูลเราก็จะใช้
delete [] d;
แล้ว array สองมิติ จะสร้างยังไงดี ?
int **e = new int*[5];
for (int i = 0; i < 5; i++)
e[i] = new int[3];
คือการประกาศให้ e เป็น array ขนาด 5x3
จากตัวอย่างเราจะสังเกตได้ว่า เราไม่จำเป็นที่จะต้องประกาศ array เป็นสี่เหลี่ยมเสมอไป
เราอาจจะประกาศเป็นรูปอะไรก็ได้
int **f = new int*[3];
f[0] = new int[2];
f[1] = new int[3];
f[2] = new int;
No comments:
Post a Comment