ผลต่างระหว่างรุ่นของ "การโปรแกรมภาษาซี สำหรับโปรแกรมเมอร์จาวาและซีชาร์ป"
Jittat (คุย | มีส่วนร่วม) |
Jittat (คุย | มีส่วนร่วม) |
||
| แถว 18: | แถว 18: | ||
อย่างไรก็ตามเนื่องจากการชี้ไปยังหน่วยความจำตำแหน่งใด ๆ โดยไม่ระบุประเภทข้อมูลที่เก็บอยู่ที่จุดนั้นไม่เพียงพอในการประมวลผล โดยทั่วไปแล้วการประกาศพอยน์เตอร์จำเป็นจะต้องระบุประเภทข้อมูลที่ตัวแปรนั้นชี้ไปด้วย | อย่างไรก็ตามเนื่องจากการชี้ไปยังหน่วยความจำตำแหน่งใด ๆ โดยไม่ระบุประเภทข้อมูลที่เก็บอยู่ที่จุดนั้นไม่เพียงพอในการประมวลผล โดยทั่วไปแล้วการประกาศพอยน์เตอร์จำเป็นจะต้องระบุประเภทข้อมูลที่ตัวแปรนั้นชี้ไปด้วย | ||
| − | การประกาศตัวแปรแบบพอยน์เตอร์ทำได้โดยการใส่ <tt>*</tt> หน้าชื่อตัวแปร | + | การประกาศตัวแปรแบบพอยน์เตอร์ทำได้โดยการใส่ <tt>*</tt> หน้าชื่อตัวแปร เช่นการเขียน <tt>int *a;</tt> คือการประกาศให้ตัวแปร <tt>a</tt> เป็นตัวแปรพอยน์เตอร์ไปยังตำแหน่งข้อมูลที่เก็บข้อมูลประเภท <tt>int</tt> |
| + | |||
| + | เมื่อเรามีตัวแปรพอยน์เตอร์แล้ว การอ้างถึง '''ข้อมูล''' ที่ตัวแปรนั้นชี้อยู่ ทำได้โดยใช้ตัวดำเนินการ <tt>*</tt> ใส่ด้านหน้า ในทางกลับกัน การหาตำแหน่งในหน่วยความจำจากตัวแปร (หรือข้อมูล) ทำได้โดยใช้ตัวดำเนินการ <tt>&</tt> พิจารณาโปรแกรมด้านล่าง | ||
| + | |||
| + | <geshi lang="c"> | ||
| + | #include <stdio.h> | ||
| + | main() | ||
| + | { | ||
| + | int a = 10; | ||
| + | int b = 20; | ||
| + | int *c; | ||
| + | printf("%d, %d\n",a,b); | ||
| + | c = &a; | ||
| + | *c = 30; | ||
| + | printf("%d, %d\n",a,b); | ||
| + | c = &b; | ||
| + | *c = 40; | ||
| + | printf("%d, %d\n",a,b); | ||
| + | } | ||
| + | </geshi> | ||
| + | |||
| + | ให้ผลลัพธ์เป็น | ||
| + | |||
| + | 10, 20 | ||
| + | 30, 20 | ||
| + | 30, 40 | ||
== การอ่านและเขียนผลลัพธ์ == | == การอ่านและเขียนผลลัพธ์ == | ||
รุ่นแก้ไขเมื่อ 09:03, 12 กรกฎาคม 2552
เอกสารนี้เกี่ยวข้องกับการโปรแกรมภาษาซี โดยออกแบบสำหรับผู้มีความรู้พื้นฐานการโปรแกรมในภาษาตระกูล java และ c# มาแล้ว
<geshi lang="c">
- include <stdio.h>
main() {
printf("Hello, world.\n");
} </geshi>
เนื้อหา
พอยน์เตอร์ (Pointers)
โปรแกรมภาษาซีมองหน่วยความจำเป็นตาราง แต่ละหน่วยย่อยของหน่วยความจำจะมีตำแหน่งระบุอยู่ ไล่เรียงกันไป หน่วยย่อยสุดของการอ้างถึงหน่วยความจำคือไบต์
พอยน์เตอร์เป็นตัวแปรที่ใช้เก็บตำแหน่งในหน่วยความจำ หรือเรียกว่าตัวแปรพอยน์เตอร์ ชี้ ไปยังตำแหน่งที่มันเก็บอยู่
อย่างไรก็ตามเนื่องจากการชี้ไปยังหน่วยความจำตำแหน่งใด ๆ โดยไม่ระบุประเภทข้อมูลที่เก็บอยู่ที่จุดนั้นไม่เพียงพอในการประมวลผล โดยทั่วไปแล้วการประกาศพอยน์เตอร์จำเป็นจะต้องระบุประเภทข้อมูลที่ตัวแปรนั้นชี้ไปด้วย
การประกาศตัวแปรแบบพอยน์เตอร์ทำได้โดยการใส่ * หน้าชื่อตัวแปร เช่นการเขียน int *a; คือการประกาศให้ตัวแปร a เป็นตัวแปรพอยน์เตอร์ไปยังตำแหน่งข้อมูลที่เก็บข้อมูลประเภท int
เมื่อเรามีตัวแปรพอยน์เตอร์แล้ว การอ้างถึง ข้อมูล ที่ตัวแปรนั้นชี้อยู่ ทำได้โดยใช้ตัวดำเนินการ * ใส่ด้านหน้า ในทางกลับกัน การหาตำแหน่งในหน่วยความจำจากตัวแปร (หรือข้อมูล) ทำได้โดยใช้ตัวดำเนินการ & พิจารณาโปรแกรมด้านล่าง
<geshi lang="c">
- include <stdio.h>
main() {
int a = 10;
int b = 20;
int *c;
printf("%d, %d\n",a,b);
c = &a;
*c = 30;
printf("%d, %d\n",a,b);
c = &b;
*c = 40;
printf("%d, %d\n",a,b);
} </geshi>
ให้ผลลัพธ์เป็น
10, 20 30, 20 30, 40