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

Ý bạn là gì khi cấp phát bộ nhớ tĩnh trong lập trình C?

Bộ nhớ có thể được cấp phát theo hai cách sau -

Ý bạn là gì khi cấp phát bộ nhớ tĩnh trong lập trình C?

Phân bổ bộ nhớ tĩnh

Biến static xác định trong một khối không gian được cấp phát, có kích thước cố định. Một khi nó được cấp phát, nó không bao giờ có thể được giải phóng.

Bộ nhớ được cấp cho biến đã khai báo trong chương trình.

  • Địa chỉ có thể được lấy bằng cách sử dụng toán tử ‘&’ và có thể được gán cho một con trỏ.

  • Bộ nhớ được cấp phát trong thời gian biên dịch.

  • Nó sử dụng ngăn xếp để duy trì phân bổ bộ nhớ tĩnh.

  • Trong phân bổ này, khi bộ nhớ được cấp phát, kích thước bộ nhớ không thể thay đổi.

  • Nó kém hiệu quả hơn.

Kích thước cuối cùng của một biến được quyết định trước khi chạy chương trình, nó sẽ được gọi là cấp phát bộ nhớ tĩnh. Nó còn được gọi là phân bổ bộ nhớ thời gian biên dịch.

Chúng tôi không thể thay đổi kích thước của một biến được cấp phát tại thời điểm biên dịch.

Ví dụ 1

Cấp phát bộ nhớ tĩnh thường được sử dụng cho một mảng. Hãy lấy một chương trình ví dụ về mảng -

#include<stdio.h>
main (){
   int a[5] = {10,20,30,40,50};
   int i;
   printf (“Elements of the array are”);
   for ( i=0; i<5; i++)
      printf (“%d, a[i]);
}

Đầu ra

Elements of the array are
1020304050

Ví dụ 2

Hãy xem xét một ví dụ khác để tính tổng và tích của tất cả các phần tử trong một mảng -

#include<stdio.h>
void main(){
   //Declaring the array - run time//
   int array[5]={10,20,30,40,50};
   int i,sum=0,product=1;
   //Reading elements into the array//
   //For loop//
   for(i=0;i<5;i++){
      //Calculating sum and product, printing output//
      sum=sum+array[i];
      product=product*array[i];
   }
   //Displaying sum and product//
   printf("Sum of elements in the array is : %d\n",sum);
   printf("Product of elements in the array is : %d\n",product);
}

Đầu ra

Sum of elements in the array is : 150
Product of elements in the array is : 12000000