0Pricing
C Academy · บทเรียน

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. auto และขอบเขตเฉพาะที่
  2. ตัวแปร static
  3. extern และตัวแปรโกลบอล
  4. register และ const
← กลับไปที่ C Academy