What will be printed by the code below?
4 phương ánCó giải thích
#include <stdio.h>
#include <stdlib.h>
int main() {
int *p = (int*) malloc(sizeof(int));
*p = 50;
printf("%d", *p);
free(p);
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: "50". Lời gọi malloc xin một khối nhớ vừa đủ cho một int và trả về địa chỉ khối đó, p giữ địa chỉ này. Lệnh *p = 50 ghi số 50 vào chính khối vừa xin, nên khi printf đọc *p nó lấy ra 50. Thứ tự các lệnh là điều cốt yếu: giá trị được in trước, chỉ sau đó free mới trả khối nhớ về cho hệ thống, nên không có chuyện đọc vào vùng đã giải phóng. Ý "Address of p" sai vì đặc tả %d đi với *p, tức là nội dung tại địa chỉ, chứ không phải bản thân địa chỉ. Ý "Garbage value" sai vì malloc đúng là không xoá vùng nhớ, nhưng ô đó đã được gán tường minh trước khi đọc. Ý "Compilation error" sai vì mã đã nạp stdlib.h cho malloc và ép kiểu con trỏ trả về đúng cách, mọi lệnh đều hợp lệ.
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