วันเสาร์ที่ 4 กรกฎาคม พ.ศ. 2552

DTS 03/01-07-2552

Pointer

ตัวแปร pointer เป็นตัวแปรที่ทำหน้าที่เก็บตำแหน่งที่อยู่ของตัวแปร สามารถอ้างอิงกลับไปกลับมาได้ มีขนาด 2 ไบต์เท่ากันหมด ไม่ว่าจะเป็น char,int,floatหรืออื่นๆ

ในการประกาศตัวแปร pointer จะต้องนำหน้าด้วยเครื่องหมาย * เช่น int*x // เป็นตัวแปร pointer

เครื่องหมาย & เป็นเครื่องหมายที่บอกตำแหน่งที่อยู่ของตัวแปรที่เก็บไว้ในหน่วยความจำ

** ในกรณีที่ตัวแปรใดมีเครื่องหมาย & นำหน้าจะไม่สามารถนำมาคำนวณได้

ตัวอย่าง
int *ptr,count // เป็นการประกาศตัวแปร ptr เป็นตัวแปร pointer และประกาศตัวแปร count
count = 100 // เป็นการกำหนดค่าให้กับ count มีค่าเท่ากับ 100
ptr = &count // เป็นการกำหนดค่าให้กับ ptr มีค่าเท่ากับตำแหน่งที่อยู่ของ count

String

string หมายถึงอักขระที่มีความยาวมากกว่า 1 ตัวแรงต่อกันเป็นข้อความ โดยข้อมูลชนิดขด้อความต้องเขียนอยู่ภายในเครื่องหมาย " " (Double quote)
หรือพูดง่าย ๆ ก็คือ String เป็น Array ของ อักขระนั่นเอง ตัวอย่างเช่น
char name[20];
หมายถึง string ที่เก็บข้อความได้ 19 ตัวอักษร ตามปกติแล้วจุดสิ้นสุดของ string จะเป็น \0
มีฟังก์ชั่นที่เกี่ยวข้องกับ String ดังนี้
getchar(); // ใช้สำหรับรับข้อมูลชนิดอักขระเข้ามาจากคีย์บอร์ด โดยรับครั้งละ 1 อักขระเท่านั้น
gets(); // จะใช้รับข้อมูลชนิดข้อความเข้ามาทางคีย์บอร์ด
putchar(); // คือการแสดงผลอักขระออกทางหน้าจอ
puts(); // ใช้ในการแสดงข้อความออกจากหน้าจอ

(set)

เป็นโครงสร้างที่ข้อมูลแต่ละตัวไม่มีความสัมพันธ์กันเลย

แบบฝึกหัด

1.ให้นักศึกษากำหนดค่าของArray1มิติ และ Array2มิติ

ตอบ arrray1มิติ int num[10]={2,4,6,8,10,12,14,16,18,20};
arrray2มิติint a[2][3] = {{1,2,3},{4,5,6}}

2.ให้นักศึกษาหาค่าของ A[2], A[6] จากค่า A={2,8,16,24,9,7,3,8}

ตอบ A[2], A[6] = 16,3

3.จากค่าของ int a[2][3] = {{6,5,4},{3,2,1}};ให้นักศึกษา หาค่าของ a[1][0] และ a[0][2]

ตอบ a[1][0] = 3- a[0][2] = 4

4.ให้นักศึกษากำหนด Structure ที่มีค่าของข้อมูลอย่างน้อย 6 Records

ตอบ #include "stdio.h"
struct time
{
int day
;int month
;int year;
};
struct Account
{
char id[20];
char acct_type[30];
char acct_name[30];
char name[30];
float balance;
struct time date;
}details;
void input_data()
{
printf("Savings Bank\n");
printf("id = ");
scanf("%s",&details.id);
printf("Bank_Name : ");
scanf("%s",&details.acct_name);
printf("Name : ");
scanf("%s",&details.name);
printf("Balance : ");
scanf("%f",&details.balance);
printf("Day-Month-Year : ");
scanf("%d-%d-%d",&details.date.day,&details.date.month,&details.date.year);
}
void show_data()
{
printf("Information Account\n");
printf("Your ID : %s\n",details.id);
printf("Your Bank_Name : %s\n",details.acct_name);
printf("Your Name : %s\n",details.name);
printf("Your Balance : %f\n",details.balance);
printf("Date : %d-%d-%d",details.date.day,details.date.month,details.date.year);
}
main()
{
input_data();
show_data();
return(0);
}

5.ให้นักศึกษาบอกความแตกต่างของการกำหนดตัวแปรชนิด Array กับตัวแปร Pointer ในสภาพของการกำหนดที่อยู่ของข้อมูล

ตอบ การกำหนดที่อยู่ของ array จะเป็นการกำหนดแบบแยกประเภท เช่น int, char, float จะไม่รวมอยู่ด้วยกันการกำหนดที่อยู่ของ pointer จะเป็นการใส่ข้อมูลลงไปใน address และจะมีการประกาศค่าก่อนที่จะใช้งาน

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

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