Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C หาทิศทางการเติบโตของ Stack

Stack และการเติบโต

Stack เป็นโครงสร้างข้อมูลเก็บองค์ประกอบ มี 2 การดำเนินการ: push (เพิ่ม) และ pop (ลบ) Stack สามารถเติบโตขึ้น (upward) หรือลง (downward) ขึ้นอยู่กับการใช้งานของโปรแกรม

อัลกอริทึม

  1. สร้างตัวแปรท้องถิ่น (local variable) ในฟังก์ชัน main
  2. สร้างฟังก์ชันที่มีตัวแปรท้องถิ่น
  3. เรียกฟังก์ชันจาก main แล้วเปรียบเทียบที่อยู่ของตัวแปรท้องถิ่นทั้งสอง
  4. ถ้าที่อยู่ใน main มากกว่าที่อยู่ในฟังก์ชัน → Stack เติบโตขึ้น (upward)
  5. ถ้าที่อยู่ใน main น้อยกว่า → Stack เติบโตลง (downward)

โค้ดภาษา C

#include <stdio.h>

void fun(int *main_local_addr) {
    int fun_local;
    if (main_local_addr < &fun_local)
        printf("Stack grows upward\n");
    else
        printf("Stack grows downward\n");
}

int main() {
    int main_local;
    fun(&main_local);
    return 0;
}

ผลลัพธ์

Stack grows downward

บนระบบส่วนใหญ่ Stack จะเติบโตลง (ทิศทางที่อยู่หน่วยความจำลดลง)