栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

几种变量的范围(生命周期)、数组、指针、C和C++内存区域。

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

几种变量的范围(生命周期)、数组、指针、C和C++内存区域。

一、几种变量的范围(生命周期):
  • 全局变量(所有函数外部):在文件中定义,在整个文件中有效;不但函数,任何一个角落都可以访问它。
  • 局部变量(函数内部):局部变量的范围从定义时起,到整个函数结束。
  • 块变量(在代码块中有效)
    1.if块
    2.switch块
    3.循环块(for、while)
    4.匿名块

定义变量的规则:让变量的生命周期尽量的短,以保证内存尽快释放。


二、数组: 1.定义

多个连续的同种数据类型数据的集合。

2.特点

1.同种数据类型;
2.多个;
3.连续内存块;
4.元素位置从0开始计算;

3.数组出现的必要性,及为什么要使用数组

将多个相同的数据类型的数值之间没有规律性的数据集合在一起,统一访问。这一点是多个同种类型的变量不能解决;

强调:C和C++中的数组,都不能通过数组本身,获取元素数;需要时只能通过计算得到;
任何类型数组的长度计算公式:
int n = sizeof 数组名/ sizeof *数组名;
int n = sizeof(数组名)/ sizeof(*数组名);


三、指针:

C++11-> C++14 -> C++17 -> C++20;

a)内存问题;变量使用内存,指针操作内存;无论哪种,无非读/写两类;
i.单位:字节,记作byte; 无论哪种变量或数组,使用的内存大小都是字节的整数倍。
ii.在内存界,进位为1024;

  1. 1024个字节就是1Kb;
  2. 1024Kb = 1MB;
  3. 1024Mb = 1GB;
  4. 1024Gb = 1Tb;
  5. 024Tb = 1Pb;

b)1Gb = (102410241024) bytes 10亿多字节;我们认为内存是连续的,一个字节紧挨着一个字节,直到所有…,
c)何为内存地址?每个字节从左到右,都有编号;编号用整数表示,这个编号就内存地址!
d)当我们在C或C++中定义各种范围的变量时,编译器将空闲内存分配给这些变量,为程序使用;
e)在C和C++中,用&vname,来得到这个变量的地址,就是它所分配到的内存块的地址,当一个变量占用多个字节的内存块,它的地址是哪个字节的编号呢?首字节的编号!地址格式:%p
f)在一个数组,数组的地址为元素0的地址,元素0的地址就是这个元素的首字节地址;

a)静态数组;栈区中的数组,数据量少;数组名为常量指针;
b)动态数组;堆区中的数组,数量量大;
i.申请;new
ii.检测;if(ptr==nullptr){ …; exit(1);};
iii.使用; 释放;delete,
只是释放指针变量指向的内存,指针变量不会删除。

四、C和C++的内存区域
  • 栈区:编译器自动分配(不需要程序员操心干预);形参和局部变量、块变量
    i.内存量少;10%左右;不适合大量内存使用;
    ii.分配效率高;
  • 堆区:由程序员申请和释放
    i.内存量大;85%左右;
    ii.分配效率低;
  • 全局区:全局变量和静态变量;
  • 常量区:常量,程序结束后由系统释放;const int x=10;
  • 代码区:存放函数的二进制代码;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/847400.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号