Hàm nào dưới đây chỉ dùng để chuyển con trỏ về vị trí đầu tệp:
Đáp án đúng: B
Câu hỏi liên quan
Phân tích câu hỏi:
Câu hỏi kiểm tra kiến thức về con trỏ và struct trong C/C++. Cần xác định cách sử dụng con trỏ để trỏ đến các thành phần của struct và mảng struct.
Đánh giá các phương án:
- A. p=&t;
t
là một biến kiểustruct T
,&t
là địa chỉ của biếnt
.p
là một con trỏ kiểustruct T*
. Câu lệnh này gán địa chỉ củat
chop
, hoàn toàn hợp lệ. - B. p=&t.x;
t.x
là một thành viên (kiểuint
) của structt
,&t.x
là địa chỉ của thành viênx
. Tuy nhiên,p
là một con trỏ kiểustruct T*
, không phảiint*
. Do đó, câu lệnh này không hợp lệ vì kiểu dữ liệu không khớp. - C. p=&a[5];
a
là một mảng gồm 10 phần tử, mỗi phần tử có kiểustruct T
.a[5]
là phần tử thứ 6 của mảng (chỉ số bắt đầu từ 0), và nó có kiểustruct T
.&a[5]
là địa chỉ của phần tử thứ 6, và nó có kiểustruct T*
, phù hợp với kiểu củap
. Câu lệnh này hợp lệ. - D. p=&a;
a
là tên mảng, khi dùng trong biểu thức (ngoại trừ các trường hợp đặc biệt như toán tửsizeof
), nó thường được chuyển đổi thành con trỏ đến phần tử đầu tiên của mảng. Tuy nhiên,&a
sẽ lấy địa chỉ của toàn bộ mảnga
. Về mặt giá trị, địa chỉ này có thể giống với địa chỉ củaa[0]
, nhưng về mặt kiểu, nó là một con trỏ đến mảng 10 phần tử kiểustruct T
, tức làstruct T (*)[10]
, chứ không phảistruct T*
. Vì vậy, câu lệnh này không hợp lệ.
Kết luận:
Câu lệnh B không hợp lệ vì cố gắng gán địa chỉ của một biến kiểu int (t.x) cho một con trỏ kiểu struct T*.
Câu lệnh D không hợp lệ vì cố gắng gán địa chỉ của mảng (struct T (*)[10]) cho con trỏ struct T*.
Trong 2 câu B và D thì câu B sai tường minh hơn vì kiểu dữ liệu của vế phải không phù hợp với vế trái, do đó câu B được coi là đáp án đúng nhất.
Kiểu dữ liệu cấu trúc (struct) cho phép gom nhiều thành phần dữ liệu có kiểu dữ liệu khác nhau (ví dụ: số nguyên, số thực, chuỗi, ký tự...) thành một nhóm duy nhất, dưới một tên gọi chung. Mỗi thành phần trong cấu trúc được gọi là một trường (field). Ví dụ, một cấu trúc có thể chứa thông tin về một người, bao gồm tên (chuỗi), tuổi (số nguyên) và chiều cao (số thực).
Các lựa chọn khác không phù hợp vì:
- Mảng: Chỉ chứa các phần tử có cùng kiểu dữ liệu.
- Con trỏ: Lưu địa chỉ của một biến khác, không chứa nhiều thành phần dữ liệu khác kiểu.
- Tập tin: Đại diện cho một nguồn dữ liệu bên ngoài (ví dụ: một file trên ổ cứng), không phải là một kiểu dữ liệu cơ bản để chứa các thành phần dữ liệu khác nhau.
- `struct ng` chứa ba biến `unsigned`: `ngay`, `thang`, và `nam`. Giả sử `unsigned` chiếm 4 byte, thì kích thước của `struct ng` là 4 + 4 + 4 = 12 byte.
- `struct diachi` chứa một biến `int` là `sonha` và một mảng `char` là `tenpho[20]`. Giả sử `int` chiếm 4 byte và `char` chiếm 1 byte, thì kích thước của `struct diachi` là 4 + 20 = 24 byte.
Union `u` sẽ có kích thước bằng kích thước lớn nhất của các thành viên của nó, tức là max(12, 24) = 24 byte.
Như vậy, không có đáp án nào đúng trong các lựa chọn đã cho.
`head` là con trỏ trỏ đến phần tử đầu tiên của danh sách.
`head->next` sẽ trả về con trỏ trỏ đến phần tử thứ hai của danh sách.
`head->next->next` sẽ trả về con trỏ trỏ đến phần tử thứ ba của danh sách.
`head->next->next->info` sẽ truy cập vào trường `info` của phần tử thứ ba trong danh sách.
Do đó, câu lệnh `head->next->next->info = 111;` sẽ gán giá trị 111 cho trường `info` của phần tử thứ ba trong danh sách. Vậy đáp án B đúng.
Các phương án khác:
- A sai vì câu lệnh sẽ không bị lỗi nếu danh sách có ít nhất 3 phần tử. Nếu danh sách ít hơn 3 phần tử, chương trình sẽ bị lỗi khi truy cập vào một vùng nhớ không hợp lệ (nullptr).
- C sai vì câu lệnh thay đổi giá trị của phần tử thứ 3, không phải thứ 2.
- D sai vì câu lệnh chỉ thay đổi giá trị của phần tử thứ 3, không phải một phần tử bất kỳ.

Bộ Đồ Án Tốt Nghiệp Ngành Trí Tuệ Nhân Tạo Và Học Máy

Bộ 120+ Đồ Án Tốt Nghiệp Ngành Hệ Thống Thông Tin

Bộ Đồ Án Tốt Nghiệp Ngành Mạng Máy Tính Và Truyền Thông

Bộ Luận Văn Tốt Nghiệp Ngành Kiểm Toán

Bộ 370+ Luận Văn Tốt Nghiệp Ngành Kế Toán Doanh Nghiệp

Bộ Luận Văn Tốt Nghiệp Ngành Quản Trị Thương Hiệu
ĐĂNG KÝ GÓI THI VIP
- Truy cập hơn 100K đề thi thử và chính thức các năm
- 2M câu hỏi theo các mức độ: Nhận biết – Thông hiểu – Vận dụng
- Học nhanh với 10K Flashcard Tiếng Anh theo bộ sách và chủ đề
- Đầy đủ: Mầm non – Phổ thông (K12) – Đại học – Người đi làm
- Tải toàn bộ tài liệu trên TaiLieu.VN
- Loại bỏ quảng cáo để tăng khả năng tập trung ôn luyện
- Tặng 15 ngày khi đăng ký gói 3 tháng, 30 ngày với gói 6 tháng và 60 ngày với gói 12 tháng.