JavaScript is required

What is output? void myfunc(char** param) { ++*param; } void main() { char* string = (char*)malloc(64); strcpy(string, "hello_World"); myfunc(&string); myfunc(&string); printf("%s\n", string); getch(); }

A.

hello_World

B.

ello_World

C.

llo_World

D.

lo_World

Trả lời:

Đáp án đúng: C


Đề bài cho một đoạn code C và hỏi về kết quả in ra màn hình. Đoạn code này sử dụng con trỏ và hàm để thay đổi giá trị của chuỗi. Phân tích: 1. `char* string = (char*)malloc(64);`: Cấp phát bộ nhớ động cho chuỗi `string` với kích thước 64 bytes. 2. `strcpy(string, "hello_World");`: Sao chép chuỗi "hello_World" vào vùng nhớ mà `string` trỏ tới. 3. `myfunc(&string);`: Gọi hàm `myfunc` và truyền địa chỉ của con trỏ `string` vào. Hàm `myfunc` nhận một con trỏ tới con trỏ (char** param). Trong hàm, `++*param` tăng giá trị của con trỏ `string` lên một đơn vị (tức là trỏ tới ký tự tiếp theo trong chuỗi). 4. `myfunc(&string);`: Gọi hàm `myfunc` lần thứ hai. Con trỏ `string` tiếp tục trỏ tới ký tự tiếp theo. 5. `printf("%s\n", string);`: In chuỗi bắt đầu từ vị trí mà `string` đang trỏ tới. Như vậy, sau hai lần gọi hàm `myfunc`, con trỏ `string` sẽ trỏ tới ký tự thứ ba của chuỗi (ký tự 'l'). Do đó, khi in ra, chuỗi sẽ bắt đầu từ ký tự 'l' và có giá trị là "llo_World".

Câu hỏi liên quan