ตัวอย่างโปรแกรม "เฮลโลเวิลด์"
ซึ่งปรากฏอยู่ในหนังสือ เดอะซีโปรแกรมมิงแลงกวิจ ที่พิมพ์ครั้งแรก
กลายมาเป็นตัวแบบของโปรแกรมเกริ่นนำในตำราการเขียนโปรแกรมส่วนใหญ่หากไม่คำนึงถึงภาษาที่ใช้เขียน
โปรแกรมดังกล่าวจะแสดงผล "hello,
world" ทางอุปกรณ์ส่งออกมาตรฐาน
ซึ่งมักจะเป็นเครื่องปลายทางหรือหน่วยแสดงผลจอภาพ
รหัสโปรแกรมรุ่นดั้งเดิมเป็นดังนี้
main()
{
printf("hello, world\n");
}
และหลังจากการปรับเปลี่ยนรหัสให้เข้ากับมาตรฐาน
รหัสจึงเป็นดังนี้ [14]
#include
<stdio.h>
int main(void)
{
printf("hello, world\n");
return 0;
}
บรรทัดแรกของโปรแกรมเป็นคำสั่งชี้แนะตัวประมวลผลก่อน (preprocessing directive) แสดงไว้โดย #include
ทำให้ตัวประมวลผลก่อน (อันเป็นเครื่องมืออย่างแรกที่พิจารณารหัสต้นฉบับขณะแปล)
นำเนื้อหาข้อความทั้งหมดของไฟล์ส่วนหัวมาตรฐาน stdio.h เข้ามาแทนที่บรรทัดนั้น
ซึ่งไฟล์ดังกล่าวมีการประกาศฟังก์ชันสำหรับอุปกรณ์นำเข้าและส่งออกมาตรฐานอาทิ printf วงเล็บแหลมที่คลุมชื่อไฟล์ stdio.h
(ซึ่งความจริงคือเครื่องหมายน้อยกว่า-มากกว่า) เป็นการแสดงว่า stdio.h
ถูกกำหนดที่ตั้งโดยใช้กลยุทธ์การค้นหาที่ให้ความสำคัญต่อไฟล์ส่วนหัวมาตรฐาน มากกว่าไฟล์ส่วนหัวอื่นที่มีชื่อเดียวกัน
อัญประกาศคู่อาจใช้ได้ในกรณีที่ต้องการนำไฟล์ส่วนหัวที่อยู่ใกล้เคียงหรือเจาะจงโครงการเข้ามารวม
บรรทัดถัดมาเป็นการนิยามฟังก์ชันชื่อว่า main
ฟังก์ชัน main
เป็นฟังก์ชันที่มีจุดประสงค์พิเศษในโปรแกรมภาษาซี
สภาพแวดล้อมขณะทำงานจะเรียกใช้ฟังก์ชัน main เพื่อเริ่มต้นการทำงานโปรแกรม
ตัวระบุชนิด int เป็นตัวแสดงว่า ค่าส่งคืน
ที่ถูกส่งคืนโดยตัวที่เรียกใช้ (กรณีนี้คือสภาพแวดล้อมขณะทำงาน)
จะเป็นจำนวนเต็มค่าหนึ่ง อันเป็นผลจากการประเมินค่าของฟังก์ชัน main
คำหลัก void ในรายการพารามิเตอร์แสดงว่าฟังก์ชัน main
ไม่ต้องใช้อาร์กิวเมนต์ [15]
วงเล็บปีกกาเปิดหมายถึงจุดเริ่มต้นของการนิยามฟังก์ชัน main
บรรทัดถัดมาเป็นการ เรียกใช้ ฟังก์ชันที่ชื่อว่า printf ซึ่งประกาศไว้ใน stdio.h และจัดเตรียมขึ้นจากไลบรารีของระบบ
ในการเรียกใช้ครั้งนี้ ฟังก์ชัน printf จะถูก ผ่านค่า
ด้วยอาร์กิวเมนต์หนึ่งตัวคือตำแหน่งหน่วยความจำของอักขระตัวแรกในสายอักขระ "hello,
world\n"
สายอักขระดังกล่าวคือแถวลำดับที่ไม่มีชื่ออันประกอบด้วยชนิดข้อมูล char จะถูกสร้างขึ้นโดยอัตโนมัติโดยตัวแปลโปรแกรม
และแถวลำดับจะมีอักขระค่าศูนย์ (null) เป็นสิ่งที่บ่งบอกจุดสิ้นสุดของสายอักขระ (printf
จำเป็นต้องทราบสิ่งนี้) \n ที่ปรากฏในสายอักขระคือ ลำดับการหลีก (escape sequence) ภาษาซีจะตีความว่าเป็นอักขระ newline
(ขึ้นบรรทัดใหม่) ซึ่งจะทำให้อุปกรณ์ส่งออกทราบว่าถึงจุดสิ้นสุดของบรรทัดปัจจุบัน
ค่าส่งคืนจากฟังก์ชัน printf คือชนิด int
แต่มันถูกละทิ้งไปอย่างเงียบ ๆ เนื่องจากไม่มีการใช้
(โปรแกรมที่ระมัดระวังมากกว่าอาจทดสอบค่าส่งคืน
เพื่อพิจารณาว่าผลจากการทำงานของฟังก์ชัน printf สำเร็จหรือไม่) อัฒภาค ;
เป็นจุดสิ้นสุดข้อความสั่ง
ข้อความสั่ง return เป็นการสิ้นสุดการทำงานของฟังก์ชัน main
และทำให้ฟังก์ชันส่งกลับเป็นจำนวนเต็มค่า 0
ซึ่งสภาพแวดล้อมขณะทำงานจะตีความว่าเป็นรหัสออกจากโปรแกรมที่แสดงว่าการทำงานประสบผลสำเร็จ
วงเล็บปีกกาปิดหมายถึงจุดสิ้นสุดของการนิยามฟังก์ชัน main
ไม่มีความคิดเห็น:
แสดงความคิดเห็น