Vấn đề
Tìm tổng n số do người dùng nhập dùng bộ nhớ cấp phát động trong C.
Giải pháp
Cấp phát động cho phép lập trình viên cấp phát bộ nhớ tại runtime.
Các hàm cấp phát động:
malloc()– cấp phát khối bộ nhớ tính bằng byte tại runtime.calloc()– cấp phát các khối bộ nhớ liên tục tại runtime.realloc()– thu hẹp hoặc mở rộng bộ nhớ đã cấp phát.free()– giải phóng bộ nhớ đã cấp phát trước đó.
Chương trình C hiển thị các phần tử và tính tổng n số.
Dùng cấp phát động để giảm thiểu lãng phí bộ nhớ.
Ví dụ
#include<stdio.h> #include<stdlib.h> void main(){ //Khai báo biến, con trỏ, tổng// int numofe,i,sum=0; int *p; //Nhập số phần tử// printf("Enter the number of elements : "); scanf("%d",&numofe); //Gọi malloc()// p=(int *)malloc(numofe*sizeof(int)); /*Kiểm tra cấp phát thành công*/ if (p==NULL){ printf("Memory not available"); exit(0); } //Nhập phần tử và tính tổng// printf("Enter the elements : \n"); for(i=0;i<numofe;i++){ scanf("%d",p+i); sum=sum+*(p+i); } printf("\nThe sum of elements is %d",sum); free(p);//Xóa 2 vị trí bộ nhớ đầu// printf("\nDisplaying the cleared out memory location : \n"); for(i=0;i<numofe;i++){ printf("%d\n",p[i]);//Hiển thị giá trị rác// } }
Kết quả
Enter the number of elements : 5 Enter the elements : 23 34 12 34 56 The sum of elements is 159 Displaying the cleared out memory location : 12522624 0 12517712 0 56