C Primer Plus 学习笔记系列之(三)

作用域和内存管理


1,在指针和参量声明中使用const

    关键在于区分让指针本身成为const和让指针指向的值成为const

    const float *p;  //p指向的值必须是不变的
    float * const p;  //p是一个常量指针,它总是指向同一个地址,但所指向的值是可以改变的
   //const可用于指针参数的传递
   void display(const int array[],int limit);
   //dispaly()只能访问而不能修改array[]的值

2,对全局数据使用const

    const变量,const数组,const结构,const指针(上面提到的)

全局常量经常放在一个include文件中,即在其它file1.c等文件中使用时,包含进去即可。此时最好还要使用静态外部存储类,即在其它file1.c等文件中使用时,包含进去即可。否则将导致包含头文件的每个文件都有统一标识的定义声明。形式如下:

xxx.h
static const double PI=3.14;
static const char *Month[12]={"January","","",...};

3,用于存储程序的内存可以按存储时期作用域链接来表征

   存储时期:静态,自动和分配。

         静态:在程序开始执行是被分配,并在程序运行时一直存在。

         自动:进入代码块开始分配,出代码块结束,内存自动释放。

         分配:malloc等开始,free结束。

   作用域:函数之外声明的变量具有文件作用域,在之后定义的全部函数课件;在代码块内定义的变量具有代码块作用域,在该代码块及其子代码块内可见。

   链接:描述了额程序的某个单元定义的变量可被链接到其它哪些地方。具有代码作用域的变量为局部变量,具有空链接。具有文件作用域的变量可有内部链接或外部链接。内部链接意味着变量只可在变量定义的文件内部使用。外部链接意味着变量可在其它文件中使用。

五种存储类:

  1. 自动:自动存储期、代码块作用域、空链接
  2. 寄存器:自动存储期、代码块作用域、空链接
  3. 静态空链接:代码块内使用static修饰的变量,静态存储期、代码块作用域、空链接
  4. 静态外部链接:所有函数外部定义,未使用static修饰。静态存储期、文件作用域、外部链接
  5. 静态内部链接:在所以函数外部定义、使用staticx修饰。静态存储期、文件作用域、内部链接

类型限定说明符:

       const ,volatile,restrict

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值