register และ const
คำแนะนำและการแก้ไขค่าไม่ได้
register และ const เป็นบทเรียน C Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C Academy มีบทเรียนทั้งหมด 4 บทเรียน
คำใบ้ register
register เสนอให้เก็บตัวแปรไว้ในรีจิสเตอร์ของ CPU เพื่อเพิ่มความเร็ว คำนี้เป็นเพียงคำใบ้เท่านั้น โดยทั่วไปคอมไพเลอร์สมัยใหม่มักไม่สนใจ
#include <stdio.h>
int main(void) {
register int i;
int sum = 0;
for (i = 0; i < 5; i++)
sum += i;
printf("sum = %d\n", sum);
return 0;
}คุณไม่สามารถขอที่อยู่ของตัวแปรนี้ได้
เนื่องจากตัวแปร register อาจไม่ได้อยู่ในหน่วยความจำ คุณจึงไม่สามารถขอที่อยู่ของมันด้วย & ได้
#include <stdio.h>
int main(void) {
register int x = 10;
printf("x = %d\n", x);
return 0;
}เหตุผลที่ register พบได้น้อยในปัจจุบัน
คอมไพเลอร์ที่ปรับปรุงประสิทธิภาพจะนำตัวแปรที่ใช้งานบ่อยไปไว้ในรีจิสเตอร์อยู่แล้ว ปัจจุบันคีย์เวิร์ดนี้จึงมีความสำคัญในเชิงประวัติศาสตร์เป็นหลัก
#include <stdio.h>
int main(void) {
int product = 1;
for (register int i = 1; i <= 4; i++)
product *= i;
printf("product = %d\n", product);
return 0;
}ตัวระบุคุณสมบัติ const
const ทำให้ตัวแปรอ่านอย่างเดียวหลังจากกำหนดค่าเริ่มต้นแล้ว หากพยายามเปลี่ยนค่าจะเกิดข้อผิดพลาดขณะคอมไพล์
#include <stdio.h>
int main(void) {
const int DAYS = 7;
printf("DAYS = %d\n", DAYS);
return 0;
}ค่าคงที่บอกเจตนา
การใช้ const กับค่าที่ไม่ควรเปลี่ยนทำให้โค้ดชัดเจนขึ้น และช่วยป้องกันการเปลี่ยนแปลงโดยไม่ตั้งใจ
#include <stdio.h>
int main(void) {
const double PI = 3.14159;
double r = 2.0;
printf("area = %.2f\n", PI * r * r);
return 0;
}const กับพอยน์เตอร์
const int *p หมายความว่าค่าที่พอยน์เตอร์ชี้อยู่จะเปลี่ยนผ่าน p ไม่ได้ แต่ตัวพอยน์เตอร์เองยังเปลี่ยนให้ชี้ไปที่อื่นได้
#include <stdio.h>
int main(void) {
int x = 5;
const int *p = &x;
printf("*p = %d\n", *p);
return 0;
}พอยน์เตอร์คงที่
int * const p หมายความว่าตัวพอยน์เตอร์เปลี่ยนไม่ได้ แต่ค่าที่มันชี้อยู่ยังเปลี่ยนได้
#include <stdio.h>
int main(void) {
int x = 5;
int * const p = &x;
*p = 9;
printf("x = %d\n", x);
return 0;
}พารามิเตอร์ฟังก์ชันแบบ const
การระบุพารามิเตอร์เป็น const เป็นการรับรองว่าฟังก์ชันจะไม่แก้ไขพารามิเตอร์นั้น ซึ่งช่วยให้ผู้เรียกคาดการณ์พฤติกรรมได้
#include <stdio.h>
void show(const int n) {
printf("n = %d\n", n);
}
int main(void) {
show(42);
return 0;
}ไม่เปลี่ยนแปลงโดยการออกแบบ
ควรใช้ const กับค่าทุกค่าที่ไม่ควรเปลี่ยน เพราะช่วยตรวจพบข้อผิดพลาดขณะคอมไพล์
#include <stdio.h>
int main(void) {
const int LIMIT = 100;
int x = 90;
if (x < LIMIT)
printf("under limit\n");
return 0;
}การใช้ const ร่วมกับตัวแปรส่วนกลาง
ตัวแปรส่วนกลางแบบ const เป็นค่าคงที่ที่ใช้ร่วมกันได้อย่างปลอดภัยและพร้อมใช้งานทั่วทั้งไฟล์
#include <stdio.h>
const int VERSION = 2;
int main(void) {
printf("VERSION = %d\n", VERSION);
return 0;
}การใช้ register และ const ร่วมกัน
คุณสามารถระบุตัวนับของลูปด้วยทั้งสองแบบได้ แม้ว่า const ในกรณีนี้จะหมายความว่าส่วนทำงานของลูปต้องไม่เปลี่ยนค่าตัวนับ
#include <stdio.h>
int main(void) {
int sum = 0;
for (int i = 0; i < 3; i++) {
const int doubled = i * 2;
sum += doubled;
}
printf("sum = %d\n", sum);
return 0;
}ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจเกี่ยวกับ register และ const
สรุป: register และ const
คุณได้เรียนรู้ตัวระบุคุณสมบัติสองแบบ
registerเป็นคำใบ้ให้จัดเก็บในรีจิสเตอร์ แต่โดยทั่วไปจะถูกละเลย- คุณไม่สามารถขอที่อยู่ของตัวแปร register ได้
constทำให้ค่าเป็นแบบอ่านอย่างเดียว- ความคงที่ของพอยน์เตอร์มีสองรูปแบบ ได้แก่ ค่าคงที่กับพอยน์เตอร์คงที่
- ใช้
constอย่างกว้างขวางเพื่อความปลอดภัย
คำถามที่พบบ่อย
บทเรียน “register และ const” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “register และ const” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “register และ const”
คำแนะนำและการแก้ไขค่าไม่ได้ คุณปฏิบัติ C Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “register และ const” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C Academy นี้ได้ไหม
ได้ บทเรียน C Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- auto และขอบเขตเฉพาะที่
- ตัวแปร static
- extern และตัวแปรโกลบอล
- register และ const