CẤP PHÁT ĐỘNG CHO MẢNG 2 CHIỀU TRÊN C

  -  
Mục đích của tớ là cấp phép động cho một biến nhỏ trỏ 2 chiều, tiếp nối dùng biến nhỏ trỏ đó nhằm nhập cùng in ra màn hình một ma trận tất cả m loại và n cột nhập từ bỏ bàn phím. Các anh chị tìm và sửa giúp lỗi trong đoạn code sau, tôi ngồi cả ngày không biết buộc phải sửa thế nào cho không còn lỗi (khi in ra thì chỉ in toàn giá trị 0, cùng phần giải phóng bộ nhớ cũng có vấn đề)


Bạn đang xem: Cấp phát động cho mảng 2 chiều trên c

#include "stdio.h"#include "conio.h"#include "stdlib.h"void main(){ int m,n, i,j; float **a, *mangcon; clrscr(); printf(" Nhap so hang m = "); scanf("%d",&m); printf(" Nhap so cot n = "); scanf("%d",&n);a = (float **)malloc(m*sizeof(float *)); mangcon= (float *)malloc(m*n*sizeof(float)); for(i=0;i
trả lời cùng với trích dẫn
*

*
Thành viên mới
*

1. Không lấy phí mang con đâu ? không tính phí như ráng kia nhiều năm dòng và lại ko súc tích . Làm cho thao tác xử lý lề mề,.....2.
sizeof(float*) hay và đúng là sizeof(...*) của một con trỏ gần bằng 2byte.=> cấp phép 2m byte cho a.theo cú pháp này thì a là 1 trong mảng trong những số ấy các yếu tắc là những nhỏ trỏ.các nguyên tố này liên tục. Từng thành phần là 1 con trỏ cùng ta sẽ đến nó trỏ mang đến vùng nhớ khác.*(a+i*n+j) tọa độ đúng đắn phải là nạm này :từng thành phần là một con trỏ trỏ mang đến vùng nhớ mới.vậy thì ta buộc phải lấy được cái showroom hay chính là giá trị nằm trong nhỏ từng con trỏ đó :
ồ đây chính là địa chỉ chính xác của thằng thành bên trong mảng 2 chiều của người sử dụng . + thêm độ lệch j thôivậy địa chỉ cửa hàng của thằng a là :


Xem thêm: Đậu Xe Nhà Vua - Choi Game Dau Xe Dung Cho 100 Danh Cho Ban Gai

#include"stdio.h"#include"conio.h"#include"stdlib.h"voidmain()intm,n,i,j;float**a,*mangcon;clrscr();printf(" Nhapsohangm=");scanf("%d",&m);printf(" Nhapsocotn=");scanf("%d",&n);a=(float**)malloc(m*sizeof(float*));mangcon=(float*)malloc(m*n*sizeof(float));for(i=0;im;i++)a=mangcon+i*n;for(i=0;im;i++)for(j=0;jn;j++)printf(" a<%d><%d>=",i+1,j+1);scanf("%f",(*(a+i)+j));for(i=0;im;i++)for(j=0;jn;j++)printf("%5.2f",*(*(a+i)+j));//l?nhnàych?inramànhình0.00printf(" ");free(a);free(mangcon);getch();
*

vấn đáp cùng với trích dẫn
Do hiện thời tôi chỉ mới học nhập môn xây dựng nên quan tâm đến còn vô cùng chậm, lúc tò mò về bé trỏ hai phía lại có không ít vấn đề phức tạp so với tôi. Do đó trong một thời điểm bị rối với không thể tìm được cho bản thân lời giải thích hợp, mặc dù cũng vấn đề đó sau khi đọc bài viết của anh kết thúc tôi lại thấy solo giản. Thật thà tôi xin cảm ơn anh hết sức nhiều.
1. Không tính tiền mang nhỏ đâu ? free như nạm kia dài dòng mà lại ko xúc tích . Khiến cho thao tác cách xử lý lề mề,.....
Khi code tôi cứ bị ám vào đầu free(a) lúc i chạy từ 0 tới n tức là free m mảng con, do a trỏ đến mangcon (tôi nghĩ thế)


Xem thêm: Grand Theft Auto Modding

Không hiểu nguyên nhân tôi dùng phiên bản Borlan C++ 5.02, khi bao gồm khai báo int i trong khoảng for đầu tiên thì trong những vòng for tiếp sau tôi tất cả khai báo thêm i nữa cũng không bị lỗi, một điều không giống nữa là khi tô black một hàm nào kia rồi bấm Ctr+F1 cũng không show ra được bảng lí giải về hàm đó(trong Turbo C thì có), chỉ tất cả phần help của window đề nghị tôi không tìm hiểu thêm được gì cả. Nếu như anh biết vì sao tại sao thì xin chỉ tôi tương khắc phục.