วันอังคารที่ 23 พฤศจิกายน พ.ศ. 2553

Exersice 2 - cs620


C Language ใน Ubuntu
การแสดงผลรวมของค่าลำดับในตัวแปร integer
แบบ  array

กำหนดค่า Array เป็น 1,2,3,4,5 ผลลัพธ์ที่ได้คือ 15

แบบ  pointer

กำหนดค่า Array เป็น 1,2,3,4,5 ผลลัพธ์ที่ได้คือ 15



Instruction
เป็นการสร้าง ฟังก์ชั่น main โดยคืนค่าที่เรียกใช้ จากนั้นกำหนดให้ array A เป็น Integer มีค่าเท่ากับ5,10 กำหนด pointer pให้เท่ากับ A และชี้ค่าไปที่ integer และให้พิมพ์ค่าออกมา

ฟังก์ชั่น copy
            สร้าง ฟังก์ชั่น copy โดยต้องการรับค่าพารามิเตอร์ทั้งหมด 3 ค่า คือ ค่าpointer from ที่ชี้ไปที่ integer ค่าของ pointer to ที่ชี้ไปที่ integer และค่าค่าของ n ที่มีค่าเป็น integer จากนั้นกำหนดค่า I ให้เป็น integer และให้หาค่า I จนกว่า I จะน้อยกว่า N

Arrays VS Pointer
            การประกาศค่าตัวแปรสามารถประกาศเป็น Array หรือ Pointer ได้เช่นกันจะต่างตรงที่
Array เป็นการเข้าถึงข้อมูลโดยที่ไม่ทำให้ค่าเปลี่ยน
Pointer ตัวแปรที่เก็บค่าอ้างอิงไปยังตำแหน่งในหน่วยความจำ
ตัวอย่าง code นี้เป็นการสร้างฟังก์ชั่นที่ทำงานกับสตริงมาใช้ในการับความยาวของสตริง โดยเมื่อทำการวน loop ของ while แล้วจะมีการ คืนค่า n กลับมา โดยcodeทั้ง 2 นี้ถึงจะมีการประกาศตัวแปรคนละแบบกันคือarray กับ pointer แต่ค่าที่ได้ออกมาจะเหมือนกัน

Segmentation fault
            การเกิด segmentation fault เกิดจากการพิมพ์ code ผิด เช่นตัวอย่าง จากรูปที่แสดง code เป็นการคำนวณโดยคำนวณจากตัว pointer ดังนั้นผลลัพธ์ที่ได้ออกมาก็จะต้องมีpointer ด้วย มิเช่นนั้น ก็จะเกิด segmentation fault ได้ ที่ถูกต้องจะต้องเป็น *p = *p+1

Pointer
1.
            การสร้างฟังก์ชั่น Addone เป็นการรับค่าตัวแปรแบบ integer โดยที่ค่าของตัวแปรจะกำหนดค่าของตัวแปรเริ่มต้นเป็น integer กำหนดค่า y ให้เท่ากับ 5 เรียกใช้งานฟังก์ชั่น Addone โดย นำ x = x+1 ซึ่งเป็นการบวก 1 ให้กับตัวแปร pointer ทำการชี้ไปยัง address ของตัวแปร y ที่รับค่าเข้ามา ทำให้เมื่อจบฟังก์ชั่นแล้ว print ค่า y ออกมาดู จะได้ค่าเท่ากับ 5
2.
การสร้างฟังก์ชั่น Addone เป็นการรับค่าตัวแปรแบบ integer โดยที่ค่าของตัวแปรจะกำหนดค่าของตัวแปรเริ่มต้นเป็น Pointer P ที่ชี้ไปที่ integer กำหนดค่า y ให้เท่ากับ 5 เรียกใช้งานฟังก์ชั่น Addone โดย นำ *p =*p+1 ซึ่งเป็นการบวก 1 ให้กับตัวแปร pointer ทำการชี้ไปยัง address ของตัวแปร y ที่รับค่าเข้ามา ทำให้เมื่อจบฟังก์ชั่นแล้ว print ค่า y ออกมาดู จะได้ค่าเท่ากับ 6
3.
สร้างฟังก์ชั่น IncrementPrt เป็นการรับค่าตัวแปรแบบ integer โดยที่ค่าของตัวแปรจะกำหนดค่าของตัวแปรเริ่มต้นเป็น Pointer P ที่ชี้ไปที่ integer กำหนด array A ให้มีค่าที่ 50,60,70 จากนั้นให้ให้pointer q ที่ชี้ไปที integer มีค่าเท่ากับ q เรียกใช้ฟังก์ชั่น IncrementPrt โดย นำ p =p+1 ซึ่งเป็นการบวก 1 ให้กับตัวแปร pointer ไปยัง address ของ q ที่กำหนดเข้ามา ทำให้เมื่อจบฟังก์ชั่นแล้ว print ค่า qออกมาดู จะได้ค่าเท่ากับ 50
4.
สร้างฟังก์ชั่น IncrementPrt เป็นการรับค่าตัวแปรแบบ integer โดยที่ค่าของตัวแปรจะกำหนดค่าของตัวแปรเริ่มต้นเป็น Pointer h ที่ชี้ไปที่ integer กำหนด array A ให้มีค่าที่ 50,60,70 จากนั้นให้ให้pointer q ที่ชี้ไปที integer มีค่าเท่ากับ A เรียกใช้ฟังก์ชั่น IncrementPrt โดย นำ *h = *h+1 ซึ่งเป็นการบวก 1 ให้กับตัวแปร pointer ไปยัง address ของ q ที่กำหนดเข้ามา ทำให้เมื่อจบฟังก์ชั่นแล้ว print ค่า qออกมาดู จะได้ค่าเท่ากับ 60

C structures
            Structure เป็นการนำเอาข้อมูลที่มีชนิดของข้อมูลที่ต่างกันมารวบรวมเข้าด้วยกัน เช่น
ตัวอย่าง กำหนดค่า x,y ให้เป็น integer เพื่อรับค่าข้อมูลที่จะinput เข้าไป กำหนดให้ค่า p1 = {0,10} เมื่อสั่งพิมพ์ค่าออกมาจะได้เท่ากับ {0,10}
            การใช้ฟังก์ชั่น struct ตามตัวอย่าง บรรทัดที่ 1 และ บรรทัดที่ 2 สามารถใช้แทนกันได้

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

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