01/10/2018, 11:42
Lỗi khi cấp phát vùng nhớ cho con trỏ trong C
Cho e hỏi là tại sao giống nhau mà a bị lỗi còn b thì không
Lỗi : E0513 a value of type “int *” cannot be assigned to an entity of type “int”
int *a, *b;//Khai báo 2 con trỏ a,b
a = (int *)malloc(sizeof(int *)); //cấp phát vùng nhớ cho con trỏ a <--- BỊ LỖI TẠI ĐÂY
b = (int *)malloc(sizeof(int *)); //cấp phát vùng nhớ cho con trỏ
printf("Nhap vao so a : ");
scanf_s("%d", a);// a là con trỏ nên không cần thêm &
printf("Nhap vao so b : ");
scanf_s("%d", b);
int *Max = TimMax(a, b);
int Min = TimMin(a, b);
printf("Min = %d, Max = %p", Min, Max);
//giả phóng vùng nhớ cho a,b
free(b);
free(a);
Bài liên quan
Min
,Max
làint
hayint*
thế bạn?Mình nghĩ vấn đề của bạn là nhầm lẫn giưã int và *int
Nếu lỗi ở đây thì khả năng sẽ lỗi cả a lẫn b, rất có thể bạn chưa include thư viện của hàm malloc.
Thử thêm lệnh include sau:
Thông báo lỗi chỉ ra lỗi ở lệnh int Min = TimMin(a, b); Mình đoán trong hàm TimMax và TimMin bạn trả về một con trỏ kiểu int. Trong khi đó bạn khai báo biến Min là kiểu nguyên nên lệnh gán là không hợp lí. Có thể sửa lại bằng:
Nếu trong hàm TimMax(a, b); trả về một con trỏ kiểu int thì không cần cấp phát cho int *Max nữa.
sizeof(int *) => sizeof(int)