1.7.52

Pointer Set and String

DTS 03-01-07-2552

พอยเตอร์ เซต และสตริง
วันนี้ได้เรียน 3 เรื่อง
-Pointer
-Set and String

Pointer

Pointer คือ ตัวแปรชนิดหนึ่งที่อ้างอิงไปยังตำแหน่งของหน่วยความจำ (Address) เป็นการใช้ตัวชี้จะทำให้โปรแกรมรวดเร็วและ มีขนาดเล็ก
การประกาศตัวแปรPointer
ต้องมีระบุตัวดำเนินการ (Operator) เพื่อบอกว่าตัวแปรดังกล่าวเป็นตัวแปรแบบตัวชี้ โดยตัวดำเนินการที่ใช้คือ * และ & เช่น จะประกาศตัวแปรชนิดPointer คือ int *countPtr; ในที่นี้หมายถึง ตัวแปร countPtr ถูกประกาศให้เป็นตัวแปรชนิด Pointer และทำหน้าที่ชี้ (เก็บ Address) ไปยังตำแหน่งที่เก็บค่าจำนวนเต็ม(เป็นชนิดเดียวกับที่เราประกาศไว้ ในที่นี้คือ Integer)
ในการประกาศตัวแปร pointer จะต้องนำหน้าด้วยเครื่องหมาย * ดังเช่น
int y;
int *x; // เป็น pointer
char *z; // เป็น pointer

pointer มีประโยชน์หลายอย่างดังนี้
-ช่วยประหยัดหน่วยความจำ ไม่ต้องประกาศตัวแปรหลายๆ ครั้งเพื่อ ส่งค่าไปมา โดยเฉพาะการส่งค่าไปมาระหว่างฟังก์ชัน ถ้าเราใช้ pointer มาช่วยในการส่งค่าแบบอ้างอิง ทำให้ใน function ที่รับค่า ไม่จำเป็นต้องประกาศตัวแปรแบบเดียวกันซ้ำอีก จะเห็นได้ชัดเจนในตัวแปรแบบ array
-ช่วยประหยัดเวลา เพราะการส่งค่าไปมาแล้วเปลี่ยนแปลงค่าที่ส่งหากันระหว่างฟังก์ชันจะทำให้เสียเวลามากกว่า แต่ถ้าเราใช้ตัวแปร pointer เลย ก็จะทำให้เข้าถึงหน่วยความจำในตำแหน่งเดียวกันเลย ทำให้ไม่ต้อง copy ค่าดังกล่าวอีก


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

1.โครงสร้างแบบเชิงเส้น (linear) เป็นโครงสร้างที่ข้อมูลมีความสัมพันธ์แบบหนึ่งต่อหนึ่ง (one-to-one relationship) นั่นคือเราสามารถระบุถึงข้อมูลตัวถัดไปของข้อมูลได้
2.โครงสร้างแบบต้นไม้หรือแบบลำดับขั้น (tree or hierarchical) เป็นโครงสร้างที่ข้อมูลมีความสัมพันธ์กันแบบหนึ่งต่อหลาย (one-to-many relationship) นั่นคือ ข้อมูลตัวหนึ่งสามารถมีความสัมพันธ์กับข้อมูลในลำดับรองลงไปได้หลายตัว
3.โครงสร้างแบบกราฟหรือเครือข่าย (graph or network) เป็นโครงสร้างที่ข้อมูลมีความสัมพันธ์กันแบบหลายต่อหลาย (many-to-many relationship) นั่นคือ ข้อมูลตัวหนึ่ง ๆ อาจจะมีความสัมพันธ์กับข้อมูลตัวอื่น ๆ กี่ตัวก็ได้


โครงสร้างข้อมูลแบบสตริง (String)สตริง เป็นข้อมูลประกอบไปด้วย ตัวอักษร ตัวเลขหรือเครื่องหมาย ที่เรียงต่อๆกันไป รวมทั้งช่องว่างด้วยสตริงกับอะเรย์ สตริงคือ อะเรย์ของอักขระ

เช่น Char name[15]

อาจจะเป็นอะเรย์ขนาด 15 ช่องอักขระ หรือเป็นสตริงขนาด 15 อักขระก็ได้ โดยจุดสิ้นสุดขอบ สตริง จะจบด้วย \0 หรือ null character

เช่น char b[] = {'S' ,'A ','W', 'A' ,'S ','D' ,'E' ,'E' ,'\0'};

หรือ char b[] = "SAWASDEE";

การกำหนดตัวแปรสตริง อาศัยหลักการของอะเรย์ เพราะสตริงคืออะเรย์ของอักขระที่เปิดท้ายด้วย (\0) และมีฟังก์ชันพิเศษสำหรับการทำงานของสตริงโดยเฉพาะ

ฟังก์ชัน scanf ( )ใช้ในการรับค่าข้อมูลต่าง ๆ ที่ป้อนเข้ามาทางแป้นพิมพ์ รูปแบบการใช้ฟังก์ชัน scanf ( )scanf ( " รหัสรูปแบบ " , &ชื่อตัวแปร ) ;โดย รหัสรูปแบบ ใช้ชุดเดียวกันกับฟังก์ชัน printf ( )ชื่อตัวแปร จะต้องนำหน้าด้วยเครื่องหมาย & ยกเว้นตัวแปร สตริงที่ใช้ในการจัดเก็บข้อความไม่ต้องมีเครื่องหมาย &

ฟังก์ชัน getchar ( ) และ getch ( )getchar( ) คือ ฟังก์ชันที่ใช้รับข้อมูลเพียง 1 ตัวอักขระจากคีย์บอร์ด getch( ) เป็น ฟังก์ชันที่ใช้รับข้อมูลเพียง 1 ตัวอักขระเหมือนกับฟังก์ชัน getchar()

ฟังก์ชัน puts() ใช้ในการพิมพ์สริงออกทางจอภาพ โดยผ่านค่าแอดเรสของสริงไปให้เท่านั้น

อะเรย์ของสตริงที่ยาวเท่ากัน

อะเรย์ในักษณะนี้จะถือว่าเป็นอะรย์ที่แท้จริง และไมาสามารถกำหนดได้ทั้งหมดเมื่อมีการให้ค่าเริ่มต้น แลเมื่อกำหนดเป็นตัวแปรโดยดำเนินการแบบการกำหนดอะเรย์ 2 มิติ การกำหนดตัวแปรในลักษณะนี้ จะแตกต่างจากการกำหนดตัวแปรแแบความยาวไม่เท่ากัน คืด ในแบบความยาวไม่เท่ากันท้ายของสตริงจะเติม (\0) ให้เพียงตัวเดียวแต่ในแบบความยาวเท่ากันนั้น จะเติม (\0) ให้ครบทุกๆช่อง เพื่อที่จะให้มีความยาวเท่าๆกัน