What will be printed when the following code is executed?
4 phương ánCó giải thích
#include <stdio.h>
int main() {
int a[] = {1,2,3,4,5,6};
int* p = a;
p += 3;
printf("%d, %d",*(a+3), *(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: "4 4". Mảng a chứa 1,2,3,4,5,6 nên a[3] bằng 4; biểu thức *(a+3) đúng là a[3], in ra 4. Con trỏ p ban đầu trỏ a[0], lệnh p += 3 đưa p tới a[3]; trong *(p++), phép tăng hậu tố trả về giá trị con trỏ trước khi tăng nên phép lấy nội dung đọc đúng a[3], cũng ra 4, chỉ sau đó p mới nhích sang a[4] và không còn được dùng nữa. Vì vậy chương trình in 4 4. "3 3" nhầm chỉ số với giá trị: cộng 3 vào con trỏ cho địa chỉ của phần tử thứ tư, không cho số 3. "4 5" là kết quả nếu phép tăng trả về giá trị sau khi tăng, tức viết *(++p); dạng hậu tố thì không như vậy. "3 4" đọc sai vế đầu thành a[2], mà hai vế đều trỏ vào cùng một phần tử nên hai số in ra phải giống nhau.
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