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

C语言数据的存储与内存的分配

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

C语言数据的存储与内存的分配

字符型数据在内存中占用一个字节,存储它的ASCII码。字符型变量可以是字符也可以是整数,但是字符型常量只能用单引号括起来表示。
char ch;
ch = 'A;
ch = 65;
都是一样的,但是‘65’是字符型65而不会输出A

单精度浮点型数据字内存中占用4个字节,双精度占用8个字节

用户存储区分为程序区和数据区,程序区保存主函数 自定义函数的程序代码
数据区存储变量数据。C里面有全局变量和局部变量。局部变量也可以叫做自动变量,在函数被调用时,系统分配存储单元,程序调用结束,存储单元被回收。主函数main中的局部变量是在一开始就被分配了存储单元,因为C是从主函数开始执行的。
C语言把保存所有变量的数据区 分成 动态和静态存储区。
动态存储区是用堆栈来管理,适合动态分配与回收。动态存储区中的变量按照函数组织,main()中的变量与其他函数中的变量分属于不同的单位,有各自的内存单元。所以在自定义函数中的变量与主函数中的变量重名也是无所谓的。
静态存储区存放全局变量和静态局部变量。静态局部变量的生存周期会持续到程序结束,由于存储单元被保留,一旦含有静态局部变量的函数被再次调用,静态局部变量会被重新激活保留上次的值(static)
全局静态变量要用宏定义来写 #define

C语言主要用两种方法使用内存:一种是在编译(将代码转化为二进制的程序)的时候由编译系统分配的内存区,另一种是用内存动态分配方式,给程序动态分配的存储区。C语言提供了一些动态分配函数来分配存储空间(这个存储空间的大小实现确定,并且在申请完空间之后定义一个指针指向它对它进行操作)
在申请内存空间的时候,用sizeof来确定存储块大小,因为不同平台的数据类型占用的空间大小可能不同

动态分配函数被定义在stdlib.h里面
malloc()
malloc的返回值是一个指针,所以在申请的时候需要定义指针的类型 大小就是括号内的空间大小,如果没有申请成功就会返回NULL
原型是 void *malloc()

calloc()
void *calloc(unsigned n, unsigned size)
功能:分配n个连续的空间,每个空间的长度都是size 并且进行初始化全部为0。成功返回一个指向起始地址的指针。

realloc()
void *realloc(void *ptr, unsigned size)
作用是更改以前的存储分配,其中ptr必须是通过动态分配得到的指针。size表示的是更新的空间大小。如果成功得到一块大小为size的区块,且内容和原来一致。如果size小于原来的区块,那么就保留size范围内的内容。

free()
释放由动态内存分配函数申请得到的内存空间。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/873345.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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