Which of the following gives the memory address of the first element in array arr, an array with 100 elements?
Trả lời:
Đáp án đúng: B
Đáp án đúng là B. arr;
Giải thích:
* **arr[0]:** Đây là giá trị của phần tử đầu tiên trong mảng `arr`, không phải địa chỉ.
* **arr:** Trong C/C++, tên mảng (ở đây là `arr`) khi được sử dụng một mình (không có chỉ số) sẽ tự động được chuyển đổi thành một con trỏ tới phần tử đầu tiên của mảng. Vì vậy, `arr` chính là địa chỉ của `arr[0]`.
* **&arr:** Đây là địa chỉ của toàn bộ mảng `arr` (địa chỉ của một mảng các phần tử), chứ không phải địa chỉ của phần tử đầu tiên. Mặc dù địa chỉ này có giá trị số giống như địa chỉ của phần tử đầu tiên, nhưng kiểu dữ liệu lại khác nhau. `arr` có kiểu là con trỏ tới phần tử của mảng (ví dụ, `int*`), còn `&arr` có kiểu là con trỏ tới một mảng (ví dụ, `int (*)[100]`).
* **arr[1]:** Đây là giá trị của phần tử thứ hai trong mảng `arr`, không phải địa chỉ của phần tử đầu tiên.