Computer >> Máy Tính >  >> Lập trình >> lập trình C

calloc () so với malloc () trong C

calloc ()

Hàm calloc () là viết tắt của vị trí liền kề. Nó hoạt động tương tự như malloc () nhưng nó phân bổ nhiều khối bộ nhớ, mỗi khối có cùng kích thước.

Đây là cú pháp của calloc () trong ngôn ngữ C,

void *calloc(size_t number, size_t size);

Đây,

số - Số phần tử của mảng được cấp phát.

kích thước - Kích thước của bộ nhớ được cấp phát tính bằng byte.

Đây là một ví dụ về calloc () trong ngôn ngữ C,

Ví dụ

#include <stdio.h>
#include <stdlib.h>
int main() {
   int n = 4, i, *p, s = 0;
   p = (int*) calloc(n, sizeof(int));
   if(p == NULL) {
      printf("\nError! memory not allocated.");
      exit(0);
   }
   printf("\nEnter elements of array : ");
   for(i = 0; i < n; ++i) {
      scanf("%d", p + i);
      s += *(p + i);
   }
   printf("\nSum : %d", s);
   return 0;
}

Đầu ra

Enter elements of array : 2 24 35 12
Sum : 73

Trong chương trình trên, Khối bộ nhớ được cấp phát bởi calloc (). Nếu biến con trỏ là null, không có cấp phát bộ nhớ. Nếu biến con trỏ không rỗng, người dùng phải nhập bốn phần tử của mảng và sau đó tổng các phần tử được tính.

p = (int*) calloc(n, sizeof(int));
if(p == NULL) {
   printf("\nError! memory not allocated.");
   exit(0);
}
printf("\nEnter elements of array : ");
for(i = 0; i < n; ++i) {
   scanf("%d", p + i);
   s += *(p + i);
}

malloc ()

Hàm malloc () được sử dụng để cấp phát kích thước byte được yêu cầu và nó trả về một con trỏ đến byte đầu tiên của bộ nhớ được cấp phát. Nó trả về con trỏ null, nếu không thành công.

Đây là cú pháp của malloc () trong ngôn ngữ C,

pointer_name = (cast-type*) malloc(size);

Đây,

pointer_name - Bất kỳ tên nào được đặt cho con trỏ.

kiểu đúc - Kiểu dữ liệu mà bạn muốn truyền bộ nhớ được cấp phát bởi malloc ().

kích thước - Kích thước của bộ nhớ được cấp phát tính bằng byte.

Đây là một ví dụ về malloc () trong ngôn ngữ C,

Ví dụ

#include <stdio.h>
#include <stdlib.h>
int main() {
   int n = 4, i, *p, s = 0;
   p = (int*) malloc(n * sizeof(int));
   if(p == NULL) {
      printf("\nError! memory not allocated.");
      exit(0);
   }
   printf("\nEnter elements of array : ");
   for(i = 0; i < n; ++i) {
      scanf("%d", p + i);
      s += *(p + i);
   }
   printf("\nSum : %d", s);
   return 0;
}

Đây là kết quả,

Đầu ra

Enter elements of array : 32 23 21 8
Sum : 84

Trong chương trình trên, bốn biến được khai báo và một trong số chúng là biến con trỏ * p đang lưu bộ nhớ được cấp phát bởi malloc. Các phần tử của mảng được in bởi người dùng và tổng các phần tử được in.

int n = 4, i, *p, s = 0;
p = (int*) malloc(n * sizeof(int));
if(p == NULL) {
   printf("\nError! memory not allocated.");
   exit(0);
}
printf("\nEnter elements of array : ");
for(i = 0; i < n; ++i) {
   scanf("%d", p + i);
   s += *(p + i);
}
printf("\nSum : %d", s);