Anh (Chị) hãy cho biết kết quả của đoạn lệnh sau là gì?
int val1, val2; int * pointer;
pointer = &val1 *pointer = 10; pointer = &val2
*pointer = 20; cout << val1
* val2 << endl;
Trả lời:
Đáp án đúng: B
Đoạn code trên thực hiện các bước sau:
1. **`int val1, val2;`**: Khai báo hai biến nguyên `val1` và `val2`. Cả hai biến này chưa được khởi tạo giá trị.
2. **`int *pointer;`**: Khai báo một con trỏ `pointer` trỏ đến một biến kiểu `int`.
3. **`pointer = &val1;`**: Gán địa chỉ của biến `val1` cho con trỏ `pointer`. Bây giờ `pointer` đang trỏ đến `val1`.
4. **`*pointer = 10;`**: Gán giá trị 10 cho vùng nhớ mà `pointer` đang trỏ tới. Vì `pointer` trỏ tới `val1`, nên `val1` bây giờ có giá trị là 10.
5. **`pointer = &val2;`**: Gán địa chỉ của biến `val2` cho con trỏ `pointer`. Bây giờ `pointer` đang trỏ đến `val2`.
6. **`*pointer = 20;`**: Gán giá trị 20 cho vùng nhớ mà `pointer` đang trỏ tới. Vì `pointer` trỏ tới `val2`, nên `val2` bây giờ có giá trị là 20.
7. **`cout << val1 * val2 << endl;`**: In ra tích của `val1` và `val2` (`10 * 20 = 200`) ra màn hình.
Vậy kết quả của đoạn code là 200.