Video Ngôn Ngữ C - 34 - Thử nghiệm lý thuyết call by value

#include <stdio.h>
int thay_doi_gia_tri(int gia_tri_moi)
{
    gia_tri_moi = 101;
    printf("gia_tri_moi %d\n", gia_tri_moi);
    return 3;
}
int thay_doi_mang(int mang_moi[])
{
    mang_moi[0] = 1;
    return 0;
}
int main()
{
    int banh_my_opla = 1;
    banh_my_opla = thay_doi_gia_tri(banh_my_opla);
    printf("banh my opla = %d\n", banh_my_opla);

    int keo_keo[10] = {};
    printf("keo_keo[0] = %d\n", keo_keo[0]);
    thay_doi_mang(keo_keo);
    printf("keo_keo[0] = %d\n", keo_keo[0]);

    return 0;
}

#Đăng ký khóa học C++ cơ bản 2016 ( NEW ) tại đây :
#Thông tin về khóa học xem tại đây :

-Sự khác biệt giữa 2 khóa học cũ và mới :
+Khóa học C++ cơ bản 2016 là khóa học mới, được đầu tư nhiều hơn từ nội dung, phương pháp học, cách học hiệu quả.
+Trong khóa học còn có nhiều kiến thức mới như thực hành trên HackerRank, thực hành trên Codefights và Đạt nghĩ mọi người nên học khóa học mới, bởi vì đây là kiến thức mới, phù hợp với hiện tại… Mặt khác âm thanh cũng tốt hơn nhiều so với khóa học cũ giúp đỡ việc lắng nghe và hiểu được tốt hơn.

2 Likes

Khi thực hiện hàm thay_doi_mang(keo_keo) thì giá trị của phần tử 0 của mảng keo_keo sẽ được gán bằng 1. Tại sao sau khi kết thúc rồi, ta thực hiện hàm

printf ("keo_keo[0] = %d\n", keo_keo[0]);

thì giá trị của phần tử 0 vẫn được lưu là 1 và in ra hả anh. Theo em hiểu thì call by value thì các thay đổi chỉ xảy ra trong hàm được gọi thôi. Khi kết thúc thì ko lưu lại nữa (ví dụ ở đoạn đầu video).

This topic was automatically closed 9 days after the last reply. New replies are no longer allowed.

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