Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Chương trình C xác định hướng tăng của stack (ngăn xếp)

Stack là gì?

Stack (ngăn xếp) là cấu trúc dữ liệu lưu trữ phần tử với hai thao tác: push (thêm) và pop (lấy ra). Stack có thể tăng lên (upward) hoặc tăng xuống (downward) tùy kiến trúc.

Thuật toán

Bước 1: Tạo biến cục bộ trong main()
Bước 2: Tạo hàm có biến cục bộ
Bước 3: Gọi hàm từ main, so sánh địa chỉ hai biến cục bộ
Bước 4: Nếu địa chỉ biến main > địa chỉ biến hàm → stack tăng lên
       Ngược lại → stack tăng xuống

Mã nguồn C

#include <stdio.h>

void fun(int *main_local_addr) {
    int fun_local;
    if (main_local_addr < &fun_local)
        printf("Stack tăng lên (upward)\n");
    else
        printf("Stack tăng xuống (downward)\n");
}

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

Kết quả

Stack tăng xuống (downward)

Trên hầu hết kiến trúc hiện đại (x86, x64), stack phát triển từ địa chỉ cao xuống thấp.