What is the output of the following code?
4 phương ánCó giải thích
int a[5] = {1, 2, 3, 4, 5};
printf("%d", a);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: "Address of the first element of array a". Tên mảng dùng trong biểu thức tự suy biến thành con trỏ tới phần tử đầu, nên giá trị thực sự được đẩy cho printf là địa chỉ của phần tử có chỉ số 0. Phải nói thẳng một khuyết điểm của mã: đặc tả số nguyên chờ một int mà lại nhận con trỏ, đây là sai khớp định dạng và trên máy 64 bit là hành vi không xác định; thứ nhìn thấy trên màn hình chính là địa chỉ đó bị đọc lại như số nguyên hệ mười. Lựa chọn "Compiler error" sai vì printf nhận số đối số thay đổi nên kiểu không bị kiểm ở mức ngăn dịch, nhiều lắm là một cảnh báo. Lựa chọn "Garbage value" không chính xác: con số in ra là một địa chỉ có thật của vùng mảng, nó chỉ khác nhau giữa các lần chạy chứ không phải rác. Lựa chọn "Error: mismatched format specifier in printf" cũng sai vì ngôn ngữ không bắt buộc chẩn đoán cho sai khớp này, chương trình vẫn dịch và vẫn chạy.
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