What does the following code print?
6 phương ánCó giải thích
#include <stdio.h>
void swap(int a, int *b) {
int temp = a;
a = *b;
*b = temp;
}
int main() {
int x = 5;
int y = 10;
swap(x, y);
printf("x = %d, y = %d\n", x, y);
return 0;
}Các phương án trả lời
Chọn một phương ánLời giảiChọn phương án để mở
Đáp án đúng: "Compiler error.". Tham số thứ hai của swap khai báo là con trỏ int, nhưng lời gọi swap(x, y) lại đưa vào y là một int. C không chuyển ngầm int sang con trỏ, đó là vi phạm ràng buộc kiểu khi đã có nguyên mẫu, nên trình dịch báo lỗi và không có chương trình nào được sinh ra để chạy. Lựa chọn "Runtime error." sai vì sự cố xảy ra lúc dịch, chưa tới lượt thực thi. Lựa chọn "x = 5, y = 10" là kết quả nếu mã dịch được và hàm không chạm tới hai biến, nhưng ở đây không dòng nào được in. Lựa chọn "x = 10, y = 5" giả định một phép đổi chỗ hoàn chỉnh, điều thân hàm này không làm nổi vì tham số thứ nhất chỉ là bản sao của x. Lựa chọn "x = 10, y = 10" đòi x nhận giá trị của y, trong khi phép gán bên trong chỉ sửa bản sao. Lựa chọn "x = 5, y = 5" đòi y nhận 5 qua con trỏ, nhưng muốn vậy phải truyền địa chỉ của y chứ không phải giá trị của nó.
Cùng phần 5
What will be the output of the following C code?
#include <stdio.h>
void main()
{
int *ptr, a = 10;
ptr = &a;
*ptr += 1;
printf("%d,%d\n", *ptr, a);
}Có lời giảiCâu hỏi(Choose 1 answer)
What is the output of this C code?
#include <stdio.h>
#include <conio.h>
int main() {
int n = 267, *pn = &n;
char* pc = pn;
*pc = 0;
printf("n = %d", n);
return 0;
}Có lời giảiCâu hỏiWhat will be the output of the C program?
int arr[5] = { 2, 3, 5, 4, 7 };
int *ptr = (&arr + 1);
printf("%d %d\n", *(arr + 1), *(ptr - 1));Có lời giảiCâu hỏiCả 41 câu của chủ đề41 câu
Xuất hiện trong 1 bộ đề
Đi tiếp từ đây