Trả lời:
Đáp án đúng: C
Đề bài yêu cầu xác định output của đoạn code C++ cho trước. Đoạn code này sử dụng con trỏ và cấp phát bộ nhớ động.
Phân tích code:
- `int *p = new int[3];` cấp phát một mảng 3 số nguyên và gán địa chỉ cho con trỏ `p`.
- `p[0] = 10; p[1] = 20; p[2] = 30;` gán giá trị cho các phần tử của mảng.
- `int *q = p;` gán địa chỉ của `p` cho `q`. Lúc này, `p` và `q` cùng trỏ đến cùng một vùng nhớ.
- `p = new int[5];` cấp phát một mảng 5 số nguyên *mới* và gán địa chỉ cho `p`. Vùng nhớ mà `p` trỏ đến trước đó (mảng 3 phần tử) bây giờ không còn được trỏ tới bởi `p` nữa, nhưng `q` vẫn trỏ đến vùng nhớ đó.
- `p[0] = 1; p[1] = 2; p[2] = 3; p[3] = 4; p[4] = 5;` gán giá trị cho các phần tử của mảng *mới* mà `p` trỏ tới.
- `cout << q[0] << q[1] << q[2];` in ra giá trị của các phần tử đầu tiên của mảng mà `q` trỏ tới. Vì `q` vẫn trỏ đến mảng ban đầu (3 phần tử), nên các giá trị được in ra là 10, 20 và 30.
Vì vậy, output của chương trình là `102030`, tương ứng với đáp án C.
Câu hỏi liên quan

FORM.08: Bộ 130+ Biểu Mẫu Thống Kê Trong Doanh Nghiệp

FORM.07: Bộ 125+ Biểu Mẫu Báo Cáo Trong Doanh Nghiệp

FORM.06: Bộ 320+ Biểu Mẫu Hành Chính Thông Dụng

FORM.05: Bộ 330+ Biểu Mẫu Thuế - Kê Khai Thuế Mới Nhất

FORM.04: Bộ 240+ Biểu Mẫu Chứng Từ Kế Toán Thông Dụng
