What is the result displayed on the screen of the following program?

4 phương ánCó giải thích
Đề bài
#include <stdio.h>
void swap(int *px, int *py)
{
    int z;
    z=*px;
    *px=*py ;
    *py=z ;
}
int main()
{
    int a=15, b=21 ;
    swap(&a,&b);
    printf ("%d  %d",a,b);
   return 0;
}

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng: "21 15". Hàm main truyền địa chỉ của a và địa chỉ của b, nên hai tham số con trỏ trỏ thẳng vào hai biến của main. Thân hàm giữ nội dung ô thứ nhất vào biến tạm, ghi nội dung ô thứ hai sang ô thứ nhất, rồi ghi biến tạm sang ô thứ hai; mọi phép ghi đều đi qua dấu sao nên tác động lên chính a và b chứ không lên bản sao. Sau lời gọi, a mang 21 và b mang 15. Lựa chọn "15 21" là trạng thái ban đầu, chỉ đúng nếu hàm nhận hai int theo giá trị và đổi chỗ trên bản sao. Lựa chọn "Error while executing the program" sai vì địa chỉ của hai biến đang sống trong main là hợp lệ, việc ghi vào đó không gây sự cố nào. Lựa chọn "None of these" không dùng được vì đã có một lựa chọn khớp đúng kết quả thật của chương trình.

Cùng phần 5

Xuất hiện trong 1 bộ đề