auto และขอบเขตเฉพาะที่
ตัวแปรระดับบล็อก
auto และขอบเขตเฉพาะที่ เป็นบทเรียน C Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C Academy มีบทเรียนทั้งหมด 4 บทเรียน
ขอบเขตคืออะไร
ขอบเขตคือบริเวณของโค้ดที่สามารถมองเห็นชื่อหนึ่งได้ ใน C ตัวแปรที่ประกาศภายในบล็อกจะมองเห็นได้เฉพาะภายในบล็อกนั้น
#include <stdio.h>
int main(void) {
int x = 5;
printf("x = %d\n", x);
return 0;
}คลาสการจัดเก็บ auto
ตัวแปรท้องถิ่นเป็น auto โดยค่าเริ่มต้น คีย์เวิร์ดนี้แทบไม่ต้องเขียน เพราะถือว่าแฝงอยู่กับตัวแปรทุกตัวที่มีขอบเขตระดับบล็อก
#include <stdio.h>
int main(void) {
auto int n = 42;
printf("n = %d\n", n);
return 0;
}ขอบเขตระดับบล็อก
วงเล็บปีกกาหนึ่งคู่จะสร้างบล็อกใหม่ ตัวแปรภายในบล็อกจะหายไปเมื่อบล็อกสิ้นสุด
#include <stdio.h>
int main(void) {
{
int inner = 10;
printf("inner = %d\n", inner);
}
return 0;
}ช่วงอายุอัตโนมัติ
ตัวแปร auto จะถูกสร้างเมื่อเข้าสู่บล็อก และถูกทำลายเมื่อออกจากบล็อก นี่คือช่วงอายุของตัวแปร
#include <stdio.h>
int main(void) {
for (int i = 0; i < 2; i++) {
int fresh = i * 10;
printf("fresh = %d\n", fresh);
}
return 0;
}การบดบังชื่อ
ตัวแปรภายในสามารถบดบังตัวแปรภายนอกที่มีชื่อเดียวกันได้ ชื่อภายในจะมีผลเหนือกว่าภายในบล็อกของมัน
#include <stdio.h>
int main(void) {
int x = 1;
{
int x = 99;
printf("inner x = %d\n", x);
}
printf("outer x = %d\n", x);
return 0;
}พารามิเตอร์ของฟังก์ชันเป็นตัวแปรท้องถิ่น
พารามิเตอร์ก็เป็นตัวแปรท้องถิ่นเช่นกัน โดยจะมีอยู่เฉพาะขณะที่ฟังก์ชันทำงาน
#include <stdio.h>
int square(int n) {
return n * n;
}
int main(void) {
printf("%d\n", square(6));
return 0;
}ตัวแปรท้องถิ่นที่ยังไม่ได้กำหนดค่าเริ่มต้น
ตัวแปร auto จะไม่ถูกกำหนดค่าเป็นศูนย์โดยอัตโนมัติ การอ่านค่าก่อนกำหนดค่าจะได้ค่าขยะ โปรดกำหนดค่าเริ่มต้นเสมอ
#include <stdio.h>
int main(void) {
int x = 0;
x = x + 5;
printf("x = %d\n", x);
return 0;
}ตัวแปรท้องถิ่นแยกกันในการเรียกแต่ละครั้ง
การเรียกฟังก์ชันแต่ละครั้งจะได้รับสำเนาใหม่ของตัวแปรท้องถิ่นของตนเอง
#include <stdio.h>
void greet(void) {
int count = 1;
printf("count = %d\n", count);
}
int main(void) {
greet();
greet();
return 0;
}เหตุผลที่ตัวแปรท้องถิ่นมีประโยชน์
ขอบเขตท้องถิ่นช่วยจำกัดตัวแปรให้อยู่ภายในบริเวณของตน จึงหลีกเลี่ยงการรบกวนกันโดยไม่ตั้งใจระหว่างส่วนต่าง ๆ ของโปรแกรม
#include <stdio.h>
int main(void) {
int a = 3;
{
int b = 4;
printf("a + b = %d\n", a + b);
}
return 0;
}บล็อกซ้อนกัน
บล็อกสามารถซ้อนกันได้ บล็อกภายในอ่านค่าตัวแปรจากบล็อกภายนอกได้ แต่บล็อกภายนอกอ่านค่าตัวแปรจากบล็อกภายในไม่ได้
#include <stdio.h>
int main(void) {
int outer = 1;
{
int middle = 2;
{
int inner = 3;
printf("%d\n", outer + middle + inner);
}
}
return 0;
}ขอบเขตกับลูป
ตัวแปรที่ประกาศในส่วนหัวของ for จะมีขอบเขตอยู่เฉพาะภายในลูปเท่านั้น
#include <stdio.h>
int main(void) {
int sum = 0;
for (int i = 1; i <= 4; i++)
sum += i;
printf("sum = %d\n", sum);
return 0;
}ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจเกี่ยวกับ auto และขอบเขตท้องถิ่น
สรุป: auto และขอบเขตท้องถิ่น
คุณได้เรียนรู้พฤติกรรมของตัวแปรท้องถิ่น
- ตัวแปรที่มีขอบเขตระดับบล็อกเป็น
autoโดยค่าเริ่มต้น - ช่วงอายุของตัวแปรผูกอยู่กับบล็อก
- ชื่อภายในสามารถบดบังชื่อภายนอกได้
- ตัวแปรท้องถิ่นจะไม่ถูกกำหนดค่าเริ่มต้นโดยอัตโนมัติ
- การเรียกฟังก์ชันแต่ละครั้งจะได้ตัวแปรท้องถิ่นชุดใหม่
คำถามที่พบบ่อย
บทเรียน “auto และขอบเขตเฉพาะที่” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “auto และขอบเขตเฉพาะที่” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “auto และขอบเขตเฉพาะที่”
ตัวแปรระดับบล็อก คุณปฏิบัติ C Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “auto และขอบเขตเฉพาะที่” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C Academy นี้ได้ไหม
ได้ บทเรียน C Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- auto และขอบเขตเฉพาะที่
- ตัวแปร static
- extern และตัวแปรโกลบอล
- register และ const