cuốn sách gpt4 ai đã làm

Sao chép mảng đa chiều (con trỏ)

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 07:32:58 29 4
mua khóa gpt4 Nike

Tôi có hai con trỏ cấu trúc tới con trỏ

typedef struct Quảng trường {
...
...
}Quảng trường;

Hình vuông **s1; // Biểu diễn mảng 2D, 100*100
Hình vuông **s2; // Biểu diễn mảng 2D, 200*200

Cả hai đều được sử dụng malloc() được phân bổ trên heap. Tôi đã khởi tạo với một số giá trị s1, được khởi tạo đầy đủ với các giá trị mặc định s2. Về cơ bản, tôi cần chuyển đổi s1 được thay đổi kích thước thành s2 kích thước trong khi vẫn duy trì (s1) và các giá trị "được thêm vào" sẽ là s2 - giá trị mặc định.

Tôi đã viết câu hỏi nàymemcpy() từ mảng nhỏ hơn đến mảng lớn hơnNhưng có vẻ như tôi đang nhầm lẫn giữa mảng và con trỏ/

Câu hỏi của tôi là, làm thế nào để chuyển đổi s1 được thay đổi kích thước thành s2 kích cỡ. Tôi không phải giữ con trỏ thô. Nếu đây là cách tiếp cận tốt hơn tôi có thể đặt s1 Sao chép vào s2 và trở lại s2Tôi hy vọng tôi đã giải thích chính xác những gì tôi đang theo đuổi. Cảm ơn!

câu trả lời hay nhất

Mảng hai chiều được sắp xếp trong bộ nhớ theo thứ tự: row1 row2 row3, v.v.

memcpy thực hiện sao chép tuyến tính từ vị trí bộ nhớ này sang vị trí bộ nhớ khác.

Vì vậy, để đạt được những gì bạn cần:

a) Tạo một mảng mới

Hình vuông **s3 = malloc(sizeof(s2));

b) Copy s2 vào đó

c) Sao chép nội dung của s1 từng dòng sang mới

for(r = 0; r < NROWS_S1; r++)
memcpy(s3[r], s1[r], sizeof(Square) * NCOLS_S1);

http://www.fredosaurus.com/notes-cpp/arrayptr/23two-dim-array-memory-layout.html

Về việc sao chép mảng đa chiều (con trỏ), chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/11787286/

29 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress