What will be the output of the following C code?
4 phương ánCó giải thích
#include <stdio.h>
void main()
{
int k = 5;
int *p = &k;
int **m = &p;
**m = 6;
printf("%d\n", k);
}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: "6". Con trỏ p giữ địa chỉ của k, còn m giữ địa chỉ của p. Khi viết **m, lần lấy nội dung thứ nhất đi từ m sang p, lần thứ hai đi từ p sang chính ô nhớ của k, nên **m = 6 ghi số 6 thẳng vào ô của k. Vì k và **m là hai con đường tới cùng một ô, printf đọc ra 6. Đây là bản chất của con trỏ nhiều cấp: chúng không sao chép giá trị mà chỉ nối thêm một chặng đường tới ô nhớ gốc. Ý "5" sai vì 5 chỉ là giá trị ban đầu, nó đã bị ghi đè trước lúc in. Ý "Run time error" sai vì cả hai con trỏ đều trỏ vào biến còn sống trong hàm, không có địa chỉ nào không hợp lệ. Ý "Junk" sai vì k đã được khởi tạo rồi sau đó còn được gán tường minh, không còn chỗ nào để giá trị rác xen vào.
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 2 bộ đề
Đi tiếp từ đây