c学习笔记:内存(普通局部变量、普通全局变量、静态局部变量、静态全局变量、普通函数与静态函数、内存的分区、动态申请堆区空间、函数内部给外部指针变量申请空间 )

目录

知识点1:普通局部变量、普通全局变量、静态局部变量、静态全局变量

普通局部变量

普通全局变量

静态局部变量(static修饰的局部变量)

静态全局变量

普通函数 与 静态函数(加static修饰)

知识点2:内存的分区详解

知识点3:内存操作注意事项

1、函数不要返回局部变量的地址。

2、函数可以返回静态局部变量的地址 (因为静态局部变量在函数结束后不被释放)

3、 不要操作 已经被释放的堆区空间。

4、不要重复释放同一段堆区空间。

知识点6:函数内部给外部指针变量申请空间

1、p没有指向有效空间

2、解决上述问题:通过返回值

3、解决上述问题:将 &p传递给函数


 

知识点1:普通局部变量、普通全局变量、静态局部变量、静态全局变量

  • 普通局部变量

定义形式: 在{ }里面定义的变量就是局部变量   

作用范围: 离他最近的{ }之间

生命周期: 离他最近的{ }结束局部变量就被释放

存储空间: 栈区

注意事项: 局部变量不初始化内容随机,不同作用范围的局部变量可以同

  • 普通全局变量

定义形式: 在函数外定义的变量就是普通全局变量
作用范围: 当前源文件以及其他源文件(加extern修饰)
生命周期: 整个进程
存储空间: 全局区
注意事项:
//普通全局变量不初始化内容为0
//普通全局变量和普通局部变量同名(就近原则)
 

  • 静态局部变量(static修饰的局部变量)

静态局部变量
定义形式:{}里面定义 且static修饰 就是静态局部变量
作用范围:离他最近的{}之间有效
生命周期: 整个进程
存储空间:全局区
注意事项:
普通全局变量 不初始化 内容为0
静态局部变量 如果初始化语句执行多次 只有第一次有效

  • 静态全局变量

静态全局变量
定义形式: 函数外定义且static修饰 就是静态全局变量
作用范围: 只能在当前源文件有效
生命周期: 整个进程
存储空间: 全局区
注意事项: 静态全局变量不初始化内容为0

  • 普通函数 与 静态函数(加static修饰)

普通函数:当前源文件 以及其他源文件(extern 修饰) 都可以使用
静态函数:只能在当前原文件使用

 

知识点2:内存的分区详解

 

知识点3:内存操作注意事项

  • 1、函数不要返回局部变量的地址。

  • 2、函数可以返回静态局部变量的地址 (因为静态局部变量在函数结束后不被释放)

  • 3、 不要操作 已经被释放的堆区空间。

  • 4、不要重复释放同一段堆区空间。

 

知识点6:函数内部给外部指针变量申请空间

1、p没有指向有效空间

2、解决上述问题:通过返回值

函数返回值与外部指针变量是同一级别的指针

3、解决上述问题:将 &p传递给函数

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值