Khi biến con trỏ không chứa bất kì một địa chỉ nào thì giá trị của nó sẽ là:
Trả lời:
Đáp án đúng: C
Khi một con trỏ không chứa bất kỳ địa chỉ nào, nó thường được gán giá trị `NULL` hoặc `0`. Trong C/C++, `NULL` thường được định nghĩa là `0` hoặc `(void*)0`. Do đó, cả hai giá trị này đều có thể được sử dụng để biểu thị một con trỏ rỗng (null pointer), tức là một con trỏ không trỏ đến bất kỳ vùng nhớ hợp lệ nào.
Tổng hợp 600+ câu hỏi trắc nghiệm lập trình C có đáp án đầy đủ nhằm giúp các bạn dễ dàng ôn tập lại toàn bộ các kiến thức.
50 câu hỏi 60 phút
Câu hỏi liên quan
Lời giải:
Đáp án đúng: D
Toán tử "++n" là toán tử tăng trước (pre-increment). Điều này có nghĩa là giá trị của biến `n` sẽ được tăng lên 1 trước khi giá trị của nó được sử dụng trong biểu thức. Ví dụ: Nếu n = 5, thì ++n sẽ làm cho n = 6 và trả về giá trị 6. Như vậy, đáp án đúng là: Giá trị của n được tăng lên trước khi giá trị của nó được sử dụng.
Lời giải:
Đáp án đúng: D
Biến động (trong ngữ cảnh lập trình) đề cập đến khả năng thay đổi kích thước, vùng nhớ và địa chỉ của một biến trong quá trình thực thi chương trình. Điều này cho phép chương trình linh hoạt hơn trong việc quản lý bộ nhớ và dữ liệu. Vì vậy:
- Phương án A không hoàn toàn đúng, vì biến động là một tính chất của biến, không chỉ phát sinh trong quá trình thực hiện chương trình mà còn được định nghĩa từ trước.
- Phương án B chính xác vì nó mô tả đúng các đặc điểm của biến động: kích thước, vùng nhớ và địa chỉ có thể thay đổi khi chương trình chạy.
- Phương án C đúng, biến động cho phép cấp phát và giải phóng bộ nhớ khi cần thiết.
Vì vậy, đáp án D (Tất cả các đáp án trên) là đáp án đúng nhất, vì nó bao gồm tất cả các khía cạnh quan trọng của biến động.
Lời giải:
Đáp án đúng: C
**Phân tích câu hỏi:**
Câu hỏi kiểm tra kiến thức về hàm `fseek()` trong C/C++ dùng để định vị con trỏ tệp trong một tệp nhị phân chứa các cấu trúc. Cần hiểu rõ các tham số của `fseek()` và cách nó hoạt động với các hằng số `SEEK_SET`, `SEEK_CUR`, `SEEK_END`.
**Đánh giá các phương án:**
* **A. Lệnh `fseek(f,10,SEEK_END)` định vị con trỏ tệp đến byte thứ 10 trong tệp.**
* Sai. `SEEK_END` chỉ vị trí bắt đầu đếm là từ cuối tệp. Lệnh này sẽ di chuyển con trỏ đến vị trí cách cuối tệp 10 byte *về phía trước* (vì offset là dương). Không phải byte thứ 10 tính từ đầu tệp.
* **B. Đoạn lệnh `fseek(f, 10, SEEK_END);` định vị con trỏ tới cuối tệp.**
* Sai. Như đã giải thích ở phương án A, `fseek(f, 10, SEEK_END)` di chuyển con trỏ 10 byte *từ* cuối tệp.
* **C. Giả sử tệp có n cấu trúc, lệnh `fseek(f, n, SEEK_SET)` sẽ đặt con trỏ tới cấu trúc cuối cùng của tệp.**
* Sai. Lệnh `fseek(f, n, SEEK_SET)` sẽ di chuyển con trỏ đến byte thứ `n` *từ đầu tệp*. Nó không đảm bảo rằng con trỏ sẽ trỏ tới cấu trúc cuối cùng. Để trỏ đến cấu trúc cuối cùng cần phải nhân n với kích thước của mỗi struct.
* **D. Giả sử tệp có n cấu trúc, lệnh `fseek(f, n, SEEK_CUR);` sẽ không làm thay đổi vị trí con trỏ của tệp.**
* Sai. `SEEK_CUR` sử dụng vị trí hiện tại của con trỏ làm điểm bắt đầu. Câu lệnh này sẽ di chuyển con trỏ tệp đi `n` byte so với vị trí hiện tại. Chỉ khi n=0 thì con trỏ mới không bị thay đổi.
**Kết luận:**
Không có đáp án nào đúng trong các phương án đã cho.
Lời giải:
Đáp án đúng: D
Câu hỏi kiểm tra về con trỏ và cách sử dụng nó với struct trong C/C++.
Khai báo `struct T { int x; float y; } t, *p, a[10];` tạo ra:
- `t`: một biến kiểu `struct T`.
- `*p`: một con trỏ trỏ đến kiểu `struct T`.
- `a[10]`: một mảng 10 phần tử, mỗi phần tử có kiểu `struct T`.
Phân tích từng đáp án:
- A. `p = &t;`: `&t` là địa chỉ của biến `t` (kiểu `struct T`), gán địa chỉ này cho con trỏ `p` (kiểu con trỏ trỏ đến `struct T`). Câu lệnh này hợp lệ.
- B. `p = &t.x;`: `&t.x` là địa chỉ của thành viên `x` (kiểu `int`) của biến `t`. Tuy nhiên, `p` là con trỏ trỏ đến kiểu `struct T`, không phải kiểu `int`. Do đó, câu lệnh này không hợp lệ vì kiểu dữ liệu không phù hợp.
- C. `p = &a[5];`: `&a[5]` là địa chỉ của phần tử thứ 6 (chỉ số 5) trong mảng `a` (kiểu `struct T`). Gán địa chỉ này cho con trỏ `p` (kiểu con trỏ trỏ đến `struct T`). Câu lệnh này hợp lệ.
- D. `p = &a;`: `&a` là địa chỉ của mảng `a`, có thể được coi là địa chỉ của phần tử đầu tiên của mảng (kiểu `struct T`). Do đó, nó có thể được gán cho con trỏ `p`. Câu lệnh này hợp lệ.
Vậy, câu lệnh không hợp lệ là B. p=&t.x;
Lời giải:
Đáp án đúng: B
**Phân tích:**
Câu hỏi này kiểm tra kiến thức về danh sách liên kết (linked list) và so sánh hiệu quả giữa hai cách khai báo cấu trúc dữ liệu để tạo danh sách liên kết.
* **Khai báo 1:** Sử dụng một cấu trúc `SV` duy nhất, trong đó mỗi phần tử chứa thông tin sinh viên (`thongtin`) và một con trỏ (`tiep`) đến phần tử tiếp theo trong danh sách.
* **Khai báo 2:** Sử dụng hai cấu trúc: `SV` (chỉ chứa thông tin sinh viên) và `DS` (chứa một con trỏ đến `SV` và một con trỏ đến phần tử `DS` tiếp theo).
**Đánh giá các phương án:**
* **A. Khai báo 1 tốn nhiều bộ nhớ hơn khai báo 2.**
* Sai. Khai báo 2 tốn nhiều bộ nhớ hơn vì mỗi nút trong danh sách liên kết khai báo 2 cần thêm bộ nhớ để lưu trữ con trỏ `sv` trong cấu trúc `DS`.
* **B. Khai báo 2 sẽ giúp chương trình chạy nhanh hơn khi đổi vị trí 2 sinh viên.**
* Sai. Việc đổi vị trí hai sinh viên trong cả hai trường hợp đều yêu cầu duyệt danh sách đến vị trí cần đổi và thực hiện các thao tác trên con trỏ. Tốc độ không khác biệt đáng kể.
* **C. Khai báo 1 sẽ giúp tiết kiệm câu lệnh hơn khi viết hàm đổi vị trí 2 sinh viên.**
* Đúng. Với khai báo 1, việc đổi vị trí hai sinh viên đơn giản chỉ là thay đổi các con trỏ `tiep`. Với khai báo 2, ta cần thay đổi cả con trỏ `sv` và `tiep`, do đó cần nhiều câu lệnh hơn.
* **D. Khai báo 2 sẽ giúp chương trình chạy nhanh hơn khi duyệt danh sách.**
* Sai. Khai báo 2 có thể chậm hơn một chút do cần truy cập gián tiếp qua con trỏ `sv` để lấy thông tin sinh viên.
**Kết luận:**
Phương án C là đúng nhất.
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP
Lời giải:
Bạn cần đăng ký gói VIP để làm bài, xem đáp án và lời giải chi tiết không giới hạn. Nâng cấp VIP

FORM.08: Bộ 130+ Biểu Mẫu Thống Kê Trong Doanh Nghiệp
136 tài liệu563 lượt tải

FORM.07: Bộ 125+ Biểu Mẫu Báo Cáo Trong Doanh Nghiệp
125 tài liệu585 lượt tải

FORM.06: Bộ 320+ Biểu Mẫu Hành Chính Thông Dụng
325 tài liệu608 lượt tải

FORM.05: Bộ 330+ Biểu Mẫu Thuế - Kê Khai Thuế Mới Nhất
331 tài liệu1010 lượt tải

FORM.04: Bộ 240+ Biểu Mẫu Chứng Từ Kế Toán Thông Dụng
246 tài liệu802 lượt tải

CEO.22: Bộ Tài Liệu Quy Trình Kiểm Toán, Kiểm Soát Nội Bộ Doanh Nghiệp
138 tài liệu417 lượt tải
ĐĂ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.
77.000 đ/ tháng