Topics
Các c u trúc, c p phát đ ng
Các phép toán File trên b nh
t ngưở t ngượ .
Bài t p
C p phát đ ng
M t m ng các bi nế đã đ cượ n đ nh kích th cướ ,
dùng đ lưu tr 1 l ngượ bi nế đã xác đ nh (t i th i
đi m bn d ch).
Kích thưc y s kng th thay đ i sau khi
bn d ch.
Tuy nhn chúng ta th ngườ kng bi tế tr cướ
đ cượ s l ngượ không gian c n thi tế cho m ng .
Vì v y nên có th s d ng c p pt b nh đ ng
đ kh c ph c nh cượ đi m tn c a m ng, tnh
ng phí kng gian nh.
Hàm malloc
void * malloc(unsigned int nbytes);
Hàm malloc đ cượ s d ng đ c p phát
đ ng nbytes trong b nh.
malloc tr v con tr t i vùng nh
đ cượ c p phát n uế thành công, tr v
con tr NULL n uế th t b i.
Nên ki m tra xem có c p phát thành
công hay không.
Ph i #include<stdlib.h>
Ví d - Đ o ng cượ m ng đ ng
int main(void)
{
int i, n, *p;
printf(“B n mu n nh p bao nhiêu s ?\n");
scanf("%d", &n);
/* C p phát 1 m ng int v i kích th cướ thích h p */
p = (int *)malloc(n * sizeof(int));
if (p == NULL)
{
printf("Memory allocation failed!\n");
return 1;
}
Ví d - Đ o ng cượ m ng đ ng
int main(void)
{
. . .
/* Nh n các s t bàn phím */
printf("Please enter numbers now:\n");
for (i = 0; i < n; i++)
scanf("%d", &p[i]);
/* Đưa ra theo th t ng cượ l i*/
printf("The numbers in reverse order are \n");
for (i = n - 1; i >= 0; --i)
printf("%d ",p[i]);
printf("\n");
/* Gi i phóng b nh */
free(p);
return 0;
}