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

第12章 存储类、链接和内存管理:


具有代码块作用域的静态变量:
static int stay = 1;

extern:
#include<stdio.h>
int Errupt;
double up[100];
extern char coal;  //coal在其他文件中定义,coal的真正意义是在程序中其他某个地方,也许是在另一个文件中。
void next();
int main()
{
    extern int Errupt;    //和在头文件中定义的Errupt是同一个变量,引用声明。
    extern double up[];
    Errupt = 32;
    next();
    return 0;
}
void next()
{
    printf("%d", Errupt);  //输出32
}                               
第一次声明为定义声明,为变量留出了存储空间;第二次声明只是告诉编译器要使用先前定义的变量Errupt,引用声明。
c语言中有5个作为存储类说明符的关键字,分别是auto、register、static、extern、typedef。

分配内存:malloc()和free():
malloc(), 分配内存函数,接受一个字节参数:所需内存字节数。然后它可以返回那块内存的第一个字节的地址。malloc()可以返回数组指针、结构指针。
double * ptd;
ptd = (double *)malloc(30 * sizeof(double));
这段代码请求30个double类型值的空间,并把ptd指向该空间所在位置。
一般,对应每个malloc()调用,应该调用一次free()释放内存以供再次使用。

使用calloc()函数来进行内存分配。
long * newmen;
newmen = (long *)calloc(100, sizeof(long));
第一个参数是所需要的内存单元的数量,第二个参数是每个单元以字节记的大小。

const:
const int nochange = 1;
const int days1[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
将变量定义为只读变量。
指针使用const则要复杂一些,因为不得不把让指针本身成为const与让指针指向的值成为const区分开来。
const float * pf;    //pf指向一个常量浮点数值,pf本身的值可以改变,等同于float const * pf;
float * const pt;    //pt是一个常量指针,pt本身的值不可以改变
const float * const ptr;   //ptr本身和ptr所指向的值都不能改变

定义函数时,如果是显示一个数组的内容,不允许函数改变数组值,可以定义为:
void display(const int array[], int limit);
char * strcat(char *, const char *);              //定义的第二个字符串参数不允许改变。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值