C语言—静态存储与动态存储

静态存储和动态存储

变量从变量值存在的时间(即生存期)角度分:静态存储方式和动态存储方式

静态:在编译时确定了固定的内存地址与内存大小,如:函数里的局部变量、全局变量等

动态:由程序控制,运行时主动性的向系统申请所需大小的内存段,并且每次分配到的内存地址不固定
在动态存储区存放数据:
1、函数形式参数
2、自动变量(未加static声明)
3、函数调用时的现场保护和
返回地址
在这里插入图片描述

存储类别

内存中的存储区域包括下面几个部分:

①程序代码区:存放函数体的二进制代码

②静态区/全局区(static):全局变量和静态变量的存储 区域

③堆区(heap):程序员分配释放

④栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值
在这里插入图片描述

函数

malloc()函数

功能说明:malloc() 是最常用的函数之一,它允许从空闲内存池中分配内存

函数原型: void *malloc(size_t bytes)
bytes:要申请的字节数
返回值:成功时返回内存段首地址,否则返回NULL

注意:通过malloc函数申请的内存空间,未自动初始化

代码示例:

#include <stdio.h>
#include <windows.h>
void main()
 {
   
	int *p,n,i,j,temp;
	printf("\n Enter number of elements in the array: ");
	scanf("%d",&n);
	p=(int*)malloc(n*sizeof(int));
	if(p == NULL){
   
		printf("memory error");
		return;
	}
	for(i = 0;i < n;++i) {
   
		printf("\n Enter element no. %d: ",i+1);
		scanf("%d",p+i);
	}
	for(i=0;i<n-1;++i)
	{
   
	      for(j=i+1;j<n;++j)
	            if(*(p+i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值