C语言变量和内存

1. 局部变量:定义在函数内部的变量,包括形参,它又可分为两部分:

2. 全局变量:定义在函数外部的变量 ,尽量少用    //很危险

3. static:静态关键字。可以用来修饰全局变量,局部变量(不能修饰形参)和函数。(static可以改变变量或者函数的生命周期,内存区域,默认值,链接属性)

内存:

代码段:存放程序的代码;

全局(静态)变量区:存放全局变量和静态变量;

栈:存放局部变量,系统自行管理该内存,内存区域大小,Windows默认1MB。

堆:动态内存区域,内存区域大,需要由程序自行管理内存,使用后一定要释放,否则会出现内存泄漏。

重点:

生命周期作用域默认值内存区域链接属性
普通局部变量

函数进入时创建

函数退出时死亡

函数内随机值
静态局部变量

函数进入时创建

程序退出时死亡

函数内0全局(静态)变量区
普通全局变量

程序进入时创建

程序退出时死亡

整个文件内0全局(静态)变量区外部
静态全局变量

程序进入时创建

程序退出时死亡

整个文件内0全局(静态)变量区内部
动态内存

调用创建函数时生

调用释放函数时死

只要找到指向它的指针随机值
普通函数整个文件内代码段外部
静态函数整个文件内代码段内部

我们可以看代码来理解这个表格

#include<stdio.h>

int a;//全局变量 程序运行开始程序结束死亡 整个文件内 0  全局(静态)变量区   外部
static int b;//全局变量 程序运行开始程序结束死亡 整个文件内 0  全局(静态)变量区   内部
const int c = 10;//全局变量 程序运行开始程序结束死亡 整个文件内 10  全局(静态)变量区   内部

int main()
{
	int d;//局部变量 函数进入创建函数退出死亡 函数内 随机值  栈   无
	static int e;//局部变量(静态)  函数进入创建程序退出死亡 函数内 0  全局(静态)变量区   无
	const int f = 20;//局部变量 函数进入创建函数退出死亡 函数内 20  栈   无

	for (int i = 0; i < 10; i++)//局部变量 块开始产生,块结束时消亡函数进入创建函数退出死亡 块内可见
	{
		printf("%d\n", i);   
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值