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 *p; p = (char*)data;

++(*p);

}

}

struct hocsinh { string hoten; int namsinh; } ;

int

main() {

char ten = 'A';

hocsinh hs[3]

for (int i = 0; i < 3; i++) {

hs[i].hoten = ten; hs[i].namsinh = 1990 + i;

inc (&ten,sizeof(ten));

}

cout << hs[1].hoten << “ - “ << hs[1].namsinh << endl;

return 0;

}

A.

A - 1990

B.

B - 1991

C.

C - 1992

D.

A – 1991

Trả lời:

Đáp án đúng: B


Đoạn code trên thực hiện một vòng lặp 3 lần, trong đó có một hàm `inc` được gọi để tăng giá trị của biến `ten` kiểu `char`. Hàm `inc` nhận một con trỏ `void*` và kích thước của dữ liệu. Nếu kích thước dữ liệu là kích thước của `char`, nó sẽ ép kiểu con trỏ `void*` thành `char*` và tăng giá trị của biến được trỏ đến. Trong vòng lặp, biến `ten` được khởi tạo là 'A'. Trong mỗi lần lặp: - `hs[i].hoten` được gán giá trị của `ten`. - `hs[i].namsinh` được gán giá trị `1990 + i`. - Hàm `inc` được gọi để tăng `ten`. Vậy: - Lần lặp 1: `ten` = 'A', `hs[0].hoten` = 'A', `hs[0].namsinh` = 1990, `ten` tăng thành 'B'. - Lần lặp 2: `ten` = 'B', `hs[1].hoten` = 'B', `hs[1].namsinh` = 1991, `ten` tăng thành 'C'. - Lần lặp 3: `ten` = 'C', `hs[2].hoten` = 'C', `hs[2].namsinh` = 1992, `ten` tăng thành 'D'. Cuối cùng, `cout` in ra `hs[1].hoten` và `hs[1].namsinh`. Theo như phân tích, `hs[1].hoten` = 'B' và `hs[1].namsinh` = 1991.

Câu hỏi liên quan