内存可以通过以下两种方式分配:
静态内存分配
静态变量定义在一个分配的空间块中,大小固定。一旦分配,就不能释放。
程序中为声明的变量分配内存。
可以使用“&”运算符获取地址并赋给指针。
内存在编译时分配。
它使用堆栈来维护内存的静态分配。
在这种分配中,一旦分配了内存,内存大小就不能改变。
效率较低。
变量的最终大小在程序运行之前确定,这被称为静态内存分配。也称为编译时内存分配。
我们无法更改在编译时分配的变量的大小。
示例1
静态内存分配通常用于数组。让我们以数组为例进行一个示例程序:
演示
#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]);
}
输出
Elements of the array are
1020304050
Example 2
让我们考虑另一个例子来计算数组中所有元素的和与积 −
实时演示
#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<p>",sum);
printf("Product of elements in the array is : %d</p><p>",product);
}</p>
输出
Sum of elements in the array is : 150
Product of elements in the array is : 12000000