Chưa hiểu lắm bài 31 trong playlist C của anh Đạt

#include <stdio.h>
int power (int coso, int somu); // function prototype
int main()
{
    int i;
    printf("i\t 2^i\t -3^i\n");
    for (i = 0; i < 10; i++)
        printf("%d\t %d\t %d\n", i, power(2,i), power(-3,i));
    getchar();
    return 0;
}
int power(int coso, int somu)
{
    int i, ketqua;
    ketqua = 1;
    for (i = 1; i<= somu; i++)
        ketqua = ketqua * coso;
    return ketqua;
}

Mình chưa hiểu code này lắm, cụ thể là cái scope ở dưới. Khi compile thì kết quả hoàn toàn giống như scope trên còn scope dưới thì mình thấy hoàn toàn k có gì liên quan đến kq hiển thị khi compile, hơn nữa ở scope dưới, biến coso và somu chưa khai báo mà nó vẫn chạy là sao? ( tức là phải int coso, somu kiểu như thế ấy).
Có pro nào giỏi giải thích cho mình nha, tại mình mới học nên k rành lắm. Cảm ơn nhiều!

Trong hàm power ở dưới, coso và somu là tham trị của hàm (đã khai báo rồi nhé, cụ thể là int power(int coso, int somu). Khi đoạn code ở trên chạy, nó sẽ chạy theo cơ ché “pass by value”, trường hợp này là gọi hàm power với các thông số là power(2,i) và power(-3,i), các giá trị 2, i, -3, i sẽ được tạo ra các bản sao có giá trị tương ứng, rồi gán cho các biến coso, somu ở trong hàm power rồi thực hiện tính toán. Bạn tham khảo lại phần Hàm nhé.

à, mình có đọc kĩ lại thì cũng khá hiểu rồi! Dù sao cũng cảm ơn bạn nhé!

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?