30/09/2018, 19:59

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	 2^i	 -3^i
");
    for (i = 0; i < 10; i++)
        printf("%d	 %d	 %d
", 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!

viết 22:09 ngày 30/09/2018

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é.

Cách Học – 12 Dec 14

Lập trình C: Bài 8 - Hàm trong C

Hàm là một đoạn lệnh thực hiện một khối công việc được lặp đi lặp lại nhiều lần trong khi chạy chương trình hoặc dùng tách một khối công việc cụ thể để chương trình đỡ phức tạp.

Người bí ẩn viết 22:15 ngày 30/09/2018

à, 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é!

Bài liên quan
0