30/09/2018, 20:36
hỏi về cách sử dụng hàm malloc() trong một function()
mình có viết một chương trính tính lãi ngân hàng như thế này
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void bank(float tien,float nam,float lai);
int main()
{
float nam=0;
float sotien=0,lai=0;
printf("xin chao mung ban den voi ngan hang cua chung toi :
");
printf("moi ban nhap so tien ban muon gui :");
scanf("%f",&sotien);
printf("muc lai suat ma ban mong muon :");
scanf("%f",&lai);
printf("so nam ban muon gui tien o ngan hang cua chung toi :");
scanf("%f",&nam);
bank(sotien,nam,lai);
getchar();
return 0;
}
void bank(float tien,float nam,float lai)
{
float *n=NULL;
float *s=NULL;
n=malloc(nam*sizeof(float));
s=malloc(nam*sizeof(float));
for(int i=0;i<nam;i++)
{
n[i]=tien*lai/100;
tien=tien+n[i];
s[i]=tien;
}
for(int i=0;i<nam;i++)
{
printf("so tien lai sau moi nam %d la :%.3f
",i+1,n[i]);
printf("tong so tien cua %d la :%.3f
",i+1,s[i]);
}
free(n,s);
}
trong hàm void bank
mình có dùng
n=malloc(namsizeof(float));
s=malloc(namsizeof(float));
mà nó toàn báo hai dòng này không hợp lệ à vậy hai dòng này sai ở đâu vậy mọi người rất mong được mọi người chỉ giáo
Bài liên quan
malloc
có parameter kiểusize_t
mà sao bạn chưa ép kiểunam
rồi mới truyền vào tính toán.free(n,s);
sao free thoải mái vậy ^^ep kieu cho nam ve kieu gi ha ban
cai size_t la de lam gi ha ban
mà trong một taig liệu mình đọc nó toàn ghi thế này thôi bạn à
size_t
là một kiểu thôi, nó tương đươngunsigned int
nhưng chủ yếu được dùng để biểu thị size của object (biến, array, struct…)sizeof
trả về kiểusize_t
nên bạn nên ép kiểunam
vềsize_t
rồi mới tính toán.Hàm
free
chỉ truyền vào một đối số sao bạn lại truyền vào nhiều hơn ???@BetapCode chỉ giáo thêm nha bạn thanh nhiều
sao trong scah cua minh no chi viet la
chứ nó không viết như ban đâu à
Chương trình bạn ok mà, chỉ sai ở chỗ free chỉ có 1 parameter thôi
free(void * ptr);
nó báo lỗi ở hai dòng này này
lỗi là bạn đã convet không hợp lệ à
sửa như bạn @BetapCode
thì lại chạy ok à
Bạn biên dịch C bằng C++ Compiler phải ko :?
C++ thì nó bắt ép kiểu kỹ càng lắm.
Còn C thì cứ tung tăng mà mần. :))
http://ideone.com/ns1Nltmình đang dùng c mà
mà cũng kỳ lại nếu viết như thế này trong hàm main()
thì ok vô cùng luôn nó chạy
sang hàm khác thì nó lại không chay và báo lỗi liên tuc bạn à @drgnz
mình dùng code block bạn à
bạn à @BetapCode mình vừa bỏ size_t của bạn đi vẫn chạy bình thường bạn à không cần nó vẫn chạy à
Mình đâu có bàn về chuyện “chạy được” và không “chạy được”.
Bạn đọc kĩ về những thứ mình đã đề cập ở trên nhé.
Tập viết code kĩ và đúng chuẩn như vậy tăng thêm kiến thức mà còn tránh được bug nữa
Sách gì mà lại không ép kiểu con trỏ trả về của
malloc
luôn, bỏ sách đó đi nhé ^^chuan roi ban à cảm ơn bạn mình để đuôi là cpp nên nó để thoe c++ bạn à sang c cái thì không cần thanh you i love you @drgnz