การโปรแกรมภาษาซี สำหรับโปรแกรมเมอร์จาวาและซีชาร์ป

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา

เอกสารนี้เกี่ยวข้องกับการโปรแกรมภาษาซี โดยออกแบบสำหรับผู้มีความรู้พื้นฐานการโปรแกรมในภาษาตระกูล java และ c# มาแล้ว

<geshi lang="c">

  1. include <stdio.h>

main() {

 printf("Hello, world.\n");

} </geshi>

พอยน์เตอร์ (Pointers)

โปรแกรมภาษาซีมองหน่วยความจำเป็นตาราง แต่ละหน่วยย่อยของหน่วยความจำจะมีตำแหน่งระบุอยู่ ไล่เรียงกันไป หน่วยย่อยสุดของการอ้างถึงหน่วยความจำคือไบต์

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

อย่างไรก็ตามเนื่องจากการชี้ไปยังหน่วยความจำตำแหน่งใด ๆ โดยไม่ระบุประเภทข้อมูลที่เก็บอยู่ที่จุดนั้นไม่เพียงพอในการประมวลผล โดยทั่วไปแล้วการประกาศพอยน์เตอร์จำเป็นจะต้องระบุประเภทข้อมูลที่ตัวแปรนั้นชี้ไปด้วย

การประกาศตัวแปรแบบพอยน์เตอร์ทำได้โดยการใส่ * หน้าชื่อตัวแปร เช่นการเขียน int *a; คือการประกาศให้ตัวแปร a เป็นตัวแปรพอยน์เตอร์ไปยังตำแหน่งข้อมูลที่เก็บข้อมูลประเภท int

เมื่อเรามีตัวแปรพอยน์เตอร์แล้ว การอ้างถึง ข้อมูล ที่ตัวแปรนั้นชี้อยู่ ทำได้โดยใช้ตัวดำเนินการ * ใส่ด้านหน้า ในทางกลับกัน การหาตำแหน่งในหน่วยความจำจากตัวแปร (หรือข้อมูล) ทำได้โดยใช้ตัวดำเนินการ & พิจารณาโปรแกรมด้านล่าง

<geshi lang="c">

  1. 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

พอยน์เตอร์มีประโยชน์มากในการเขียนฟังก์ชันให้มีผลข้างเคียง (side effect) ตัวอย่างเช่นฟังก์ชัน swap ด้านล่าง

<geshi lang="c"> void swap(int *a, int *b) {

 int tmp = *a;
 *a = *b;
 *b = tmp;

} </geshi>

การอ่านและเขียนผลลัพธ์

อาร์เรย์และพอยน์เตอร์

อาร์กิวเมนต์จาก command line

การประมวลผลสตริง

การคอมไพล์และลิงก์โปรแกรมที่อยู่ในหลายแฟ้ม