13.7.52

DTS 12-07-52

สรุปบทเรียน Pointer , Set and String

Pointer
คือ ตัวแปรที่เก็บตำแหน่งของหน่วยความจำ (memory address) ซึ่งตำแหน่งของหน่วยความจำนี้จะเป็นที่อยู่ของสิ่งอื่น ๆ (โดยทั่วไปจะเป็นตัวแปรอื่น) ในหน่วยความจำ เช่น ถ้าตัวแปรตัวหนึ่งเก็บตำแหน่งของตัวแปรอีกตัว เราอาจกล่าวได้ว่าตัวแปรตัวแรกนั้นชี้ไปยัง (point to) ตัวแปรที่สอง จะเก็บ Address ของตัวแปร แทนที่จะเก็บข้อมูลต่างๆ เหมือนตัวแปรชนิดอื่นๆ จากคุณสมบุติของ ตัวแปรชนิด Pointer จึงมองดูเหมือนกับ ตัวชี้ หรือพอยน์เตอร์ ซึ่งชี้ไปที่ Address ของตัวแปร


การกำหนดตัวแปร Pointer

จะคล้ายกับการกำหนดตัวแปรชนิดต่างๆ เพียงแต่ต้องมีเครื่องหมาย * หน้าชื่อตัวแปร ดังนี้
int *pt;
ในที่นี้กำหนดให้ pt เป็นตัวแปร Pointer ซึ่งเก็บ Address ของตัวแปรชนิดตัวเลขจำนวนเต็ม ในเรื่อง Pointer มีเครื่องหมาย 2 ชนิด คือ * และ & เครื่องหมาย * จะให้ค่า ของข้อมูล ซึ่งเก็บอยู่ใน Address โดย Address นี้เก็บ อยู่ในตัวแปร Pointer ซึ่งอยู่หลังเครื่องหมาย * สำหรับเครื่องหมาย & จะให้ค่า Address ของตัวแปรซึ่งอยูหลังเครื่องหมาย & ดังตัวอย่าง
ตัวอย่าง

#include "stdio.h"
main()
{
int *pt, a, b;
a = 30;
pt = &a;
b = *pt;
printf("%d\n",b);
}




จะได้ผลลัพท์ = 30



ความสัมพันธ์ของ Pointer และ Array
ใน C++ Pointer และ Array จะมีความสัมพันธ์กันมาก เมื่อใข้ Array โดยไม่ระบุ Index เลย Array จะทำหน้าที่ เสมือนเป็น Pointer ซึ่งชี้ไปที่ ส่วนต้นของ Array (ตัวแปร Array ตัวแรก) ดังเช่นใน Function gets() ซึ่งเราจะเขียนเฉพาะชื่อ Array เท่านั้น Function gets() จะนำตัวอักษรที่ป้อนทางแป้นพิมพ์ ไปเก็นใน Array ซึ่งถูกชี้โดย Pointer การผ่านค่าไป Function ใน C++ จะผ่านในรูปของ Pointer เท่านั้น




String
หมายถึง ชุด(array)ของตัวอักขระ(character) ที่เรียงต่อกัน ตริงจะเป็นคําหรือข้อความที่มีความหมาย ใน C++ ไม่มีชนิดข้อมูลประเภท string การกําหนด string คือการกําหนดเป็นอาร์เรย์ของข้อมูลชนิด char หลาย ๆ ตัวนํามาเชื่อมต่อกันเป็น string เช่น character 'C','o','m','p','u','t','e','r' เก็บไว้ในอาร์เรย์รวมเป็นข้อมูล string ซึ่งจะได้ข้อความ "Computer" ข้อมูล string เป็นได้ทั้งค่าคงที่(constant) และตัวแปร(variable)


การกําหนดค่าคงที่ให้ string
วิธีการกําหนดตัวแปรประเภทchar ให้เป็นอาร์เรย์เพื่อให้เก็บค่าคงที่


1. ประกาศตัวแปรอาร์เรย์ประเภท char ไม่ระบุขนาดของอาร์เรย์และกําหนดค่ามีรูปแบบดังนี้

char string_name[] = "string or text";

โดยที่ char คือ ประเภทข้อมูลของสตริงเป็น character
string_name[] คือ ชื่อของตัวแปรสตริง โดยที่[ ] กําหนดให้เป็นอาร์เรย์ของสตริงไม่ระบุขนาดของอาร์เรย์ C++ Compilerจะตรวจสอบและกําหนดขนาดจากค่าคงที่ด้านขวาของเครื่องหมายเท่ากับ "string or text" คือข้อความหรือสายอักขระที่เป็นค่าคงที่ของสตริงต้องเขียนไว้ใน
เครื่องหมาย " " เสมอ (ถ้าเป็นค่าคงที่ประเภท char ค่าคงที่เขียนไว้ในเครื่องหมาย ' ') เช่น

char name[] ="Sirichai Namburi";
char str[] = "C++ is OOP language";

เนื่องจากสตริงเป็นอาร์เรย์ของ char จึงสามารถกําหนดค่าคงที่ได้อีกวิธีหนึ่ง คือ

char name[] = {'S','i','r','i','c','h','a', 'i',' ','N','a','m','b','u','r', 'i','\0'};

สําหรับ'\0' หมายถึงเครื่องหมาย null ซึ่งใช้เป็นรหัสจบสตริงในภาษาC++

2. ประกาศตัวแปรอาร์เรย์ประเภทchar โดยระบุขนาดของอาร์เรย์และกําหนดค่า มีรูปแบบดังนี้

char string_name[n] = " string or text";

โดยที่ n คือขนาดของอาร์เรย์ 1 มิติ เช่น

char name[31]; //ตัวแปรname สามารถเก็บอักขระได้30 ตัวตัวที่31ใช้เก็บ'\0'
char location[50]; //ตัวแปรlocation สามารถเก็บอักขระได้49 ตัวตัวที่50 ใช้เก็บ'\0'






ไม่มีความคิดเห็น:

แสดงความคิดเห็น