Assume we have the following code:
4 phương ánCó giải thích
int i=4;
int *p = &i;What is the result of the following expression: ++*p?
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: "5". Con trỏ p giữ địa chỉ của i, nên biểu thức lấy nội dung chỗ p trỏ tới chính là biến i và dùng được ở cả hai vai, đọc lẫn ghi. Hai toán tử một toán hạng ở đây cùng mức ưu tiên và kết hợp từ phải sang trái, nên phép tăng được áp lên giá trị đã lấy ra: i tăng từ 4 lên 5 trước khi biểu thức cho giá trị, và giá trị đó cũng là 5. Giá trị "4" là giá trị cũ của i, nó chỉ xuất hiện khi dùng dạng tăng sau viết với ngoặc quanh phần lấy nội dung, khi ấy biểu thức cho 4 còn i vẫn thành 5. Giá trị "9" cần cộng thêm năm đơn vị, không có phép nào trong mã làm việc đó. Giá trị "12" cần một phép nhân hoặc một lượng cộng lớn hơn hẳn, cũng không có nguồn nào sinh ra. Điều dễ lẫn là dạng tăng đặt sau tên con trỏ, vì khi đó phép tăng tác động lên con trỏ chứ không lên giá trị được trỏ tới.
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