Bài đăng nổi bật


Truyền bằng giá trị
Mặc nhiên trong C, tất cả các đối số của hàm được truyền bằng giá trị. Điều này có nghĩa là, khi các đối số được truyền đến hàm được gọi, các giá trị được truyền thông qua các biến tạm. Mọi sự thao tác chỉ được thực hiện trên các biến tạm này. Hàm được gọi không thể thay đổi giá trị của chúng. Xem ví dụ sau,
         #include <stdio.h>
         main()
         {
                   int a, b, c;
                   a = b = c = 0;
                   printf(“\nEnter 1st integer: “);
                   scanf(“%d”, &a);
                   printf(“\nEnter 2nd integer: “);
                   scanf(“%d”, &b);
                   c = adder(a, b);
                   printf(“\n\na & b in main() are: %d, % d”, a, b);
                   printf(“\n\nc in main() is: %d”, c);
                   /* c gives the addition of a and b */
         }

         int adder(int a, int b)
         {
                   int c;
                   c = a + b;
                   a *= a;
                   b += 5;
                   printf(“\n\na & b within adder function are: %d, %d “, a, b);
                   printf(“\nc within adder function is : %d”,c);
                   return(c);
         }
Ví dụ về kết quả thực thi khi nhập vào 2 và 4:
         a & b in main() are: 2, 4
         c in main() is: 6
         a & b within adder function are: 4, 9
         c within adder function is : 6
Chương trình trên nhận hai số nguyên, hai số này được truyền đến hàm adder(). Hàm adder() thực hiện như sau: nó nhận hai số nguyên như là các đối số của nó, cộng chúng lại, tính bình phương cho số nguyên thứ nhất, và cộng 5 vào số nguyên thứ hai, in kết quả và trả về tổng của các đối số thực. Các biến được sử dụng trong hàm main() và adder() có cùng tên. Tuy nhiên, không có gì là chung giữa chúng. Chúng được lưu trữ trong các vị trí bộ nhớ khác nhau. Điều này được thấy rõ từ kết quả của chương trình trên. Các biến a và b trong hàm adder() được thay đổi từ 2 và 4 thành 4 và 9. Tuy nhiên, sự thay đổi này không ảnh hưởng đến các giá trị của a và b trong hàm main(). Các biến được lưu ở những vị trí bộ nhớ khác nhau. Biến c trong main() thì khác với biến c trong adder().

Vì vậy, các đối số được gọi là truyền bằng giá trị khi giá trị của các biến được truyền đến hàm được gọi và bất kỳ sự thay đổi trên giá trị này cũng không ảnh hưởng đến giá trị gốc của biến đã truyền.

Post a Comment

أحدث أقدم