JavaScript is required

Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì?

void inc (void* data, int psize) {

if (psize == sizeof (char)) {

char* pchar;

pchar = (char*)data;

++(*pchar);

} else if (psize == sizeof(int)) {

int* pint; pint = (int*)data;

++(*pint);

}

}

int main() { char c = 'y'; inc (&s,sizeof(s));

cout << s << endl;

return 0;

}

A.

A. 'y'

B.

B. 'x'

C.

C. 'z'

D.

D. Lỗi biên dịch.

Trả lời:

Đáp án đúng: D


Đoạn chương trình trên thực hiện tăng giá trị của một biến kiểu `char` hoặc `int` thông qua con trỏ. Trong hàm `main`, biến `c` được khởi tạo với giá trị 'y'. Sau đó, hàm `inc` được gọi với địa chỉ của `c` và kích thước của `c`. Vì kích thước của `c` là `sizeof(char)`, nhánh `if (psize == sizeof (char))` được thực thi. Trong nhánh này, con trỏ `pchar` được gán địa chỉ của `c`, và `++(*pchar)` tăng giá trị của ký tự mà `pchar` trỏ tới. Do đó, 'y' tăng lên thành 'z'. Cuối cùng, giá trị của `c` ('z') được in ra màn hình. Vậy đáp án đúng là C.

Câu hỏi liên quan