内存管理学习笔记

本文详细介绍了C语言中变量的作用域,包括外部链接、内部链接和无链接,以及静态存储期和自动存储期的区别。同时,讲解了如何使用`static`关键字、动态内存分配`malloc`和`calloc`,以及`free`函数进行内存释放。此外,还讨论了`const`限定符的用法和指针在数组操作中的应用。
摘要由CSDN通过智能技术生成
{ int }//n只作用于改语句块

变长数组中,形参名不可省略

void name(int n,int m int shuzu[n][m]

文件作用域变量也称全局变量

  c变量有三

1.外部链接//可作用于其他翻译单元

2.内部链接

3.无链接:有  具块作用域   函数作用域  函数原型作用域

static 关键字:static int dog //dog只属于该文件

存储期:1.静态:程序执行期间一直存在

2.线程:并发程序 多线程 作用到线程结束  _Thread_local 时每个线程具有改变量的私有备份

3.自动:块作用域 块结束 (用关键词 static 可使其具有静态存储期 但是只有改函数可以看见,不过可以通过指针对其使用,查看。

4.动态分配

储存类别说明符 :auto 自动 register 块  static静态   extern 引用式声明 _thread_local  typrdef

int tern = 1;//定义式声明,可被其他文件调用 因为这里默认成 extern int tern = 1; 要想只作用有该文件,加一个 static
int main ()
{


extern int tern;//引用式声明  
}

外部变量只能声明一次

malloc 接受字节数 找匿名内存 返回首字节的地址 (可被其他函数调用)

int *ptz;
ptz = (int*)molloc(30*xizeof(int));//为30个int类型的数申请空间,ptz指向首字节地址 有ptz[0]引用元素或者*(ptz+i)引用,i为整数

calloc 需要两个参数  ,且把所有位设为0,和malloc区别

int *pz;
pz = (int*)calloc(100,sizeof(long));

exit 结束程序 exit(EXIT_FAILURE);

free 释放内存,接受地址,避免内存泄漏(把内存用完)

int (*pz)[6];
pz = (int(*)[6])malloc(n*6*sizeof(int));//n*6数组为一个二维数组分配内存
typedef const int zip ;//将zip作为int别名 且zip不可更改


const zip q = 8;//const 变量变量声明时必须完成赋初值
 
const zip q;
q = 9;//错误
const int *pf;//pf指向int类型的const值
int *const pt =&a ;pt 不可以指向别的地方,只能指向a
const int *const pz ==int const *const pt =&a;//指向的值不能改变,也不能指向其他地方

如果指针指向数组 这可以用*(pz+i)引用

volatile int *pz;指向易变位置的指针   volatile 只能用于指针

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值