Bài toán
Hiển thị và tính tổng n số do người dùng nhập, sử dụng cấp phát động để tránh lãng phí bộ nhớ.
Giải pháp
Dùng malloc() cấp phát, free() giải phóng. Kiểm tra con trỏ NULL sau cấp phát.
Chương trình
#include <stdio.h>
#include <stdlib.h>
void main() {
int numofe, i, sum = 0;
int *p;
printf("Nhap so phan tu: ");
scanf("%d", &numofe);
// Cấp phát động
p = (int *)malloc(numofe * sizeof(int));
if (p == NULL) {
printf("Khong du bo nho");
exit(0);
}
printf("Nhap cac phan tu:\n");
for (i = 0; i < numofe; i++) {
scanf("%d", p + i); // tương đương &p[i]
sum = sum + *(p + i);
}
printf("\nTong cac phan tu la %d", sum);
free(p); // giải phóng bộ nhớ
printf("\nHien thi vung nho da giai phong:\n");
for (i = 0; i < numofe; i++)
printf("%d\n", p[i]); // giá trị rác
}
Kết quả
Nhap so phan tu: 4 Nhap cac phan tu: 23 45 67 89 Tong cac phan tu la 224 Hien thi vung nho da giai phong: 7410816 0 7405904 0