全国计算机等级考试二级教程--C语言程序设计(2018年版) 随手笔记(五)

声明:本篇文章只是个人知识盲区、知识弱点、重点部分的归纳总结,望各位大佬不喜勿喷。梳理顺序是按照书籍的实际顺序梳理,转载请注明出处。

作者:sumjess

目前内容:第十二、十三章总结

1、C语言中的用户标识符的作用域和存储类:

C语言之局部变量&全局变量&变量存储方式

全局变量与局部变量在内存中的区别详细解析

2、编译预处理:

   (1)在C语言中凡是以“#”开头的行,都称为“编译预处理”命令行;

  (2)C语言预处理命令有:#define、#undef、#include、#if、#else、#elif、#endif、#ifdef、#ifndef、#line、#pragma、#error等,每行末尾不得用“;”结尾;

   (3)宏替换:

          一、 不带参数的宏定义:

                ①不带参数的宏定义命令行形式如下:

                    #define    宏名    替换文本

                ② 替换文本中可以包含已定义过的宏名,例如:

                    #define    PI    3.14

                    #define    ADDPI    (PI+1)

                 ③ 当宏定义在一行中写不下,需要在下一行继续时,只需在最后一个字符后紧接着加一个反斜线“\”。

#define    sumjess   sumjes\//不可以有空格
stry  //需要顶头写,不可以有空格

                 ④ 同一个宏定义不能重复定义,除非两个宏定义命令行完全一致。

                 ⑤ 替换文本不能替换双引号中与宏名相同的字符串:

                     如果YES是已定义的宏名,则不能用与他相关的替换文本来替换printf(“YES”)中的YES。

                 ⑥ 替换文本并不替换用户标识符中的成分:

                     例如,宏名YES,不会替换标识符YESSORNO中的YES。

                 ⑦ 用作宏名的标识符通常用大写的字母表示,这并不是语法规定,只是一种习惯。

                 ⑧ 在C程序中,宏定义的定义位置一般写在程序的开头。

           二、带参数的宏定义:

                 ① 带参数的宏定义:

                      #define    宏名(形参表)    替换文本

                      #define    MU(X,Y)    ((X)*(Y))

               ② 同一个宏定义不能重复定义,除非两个宏定义命令行完全一致。

                 ③ 在调用带参数的宏名时,一对圆括号必不可少。

                 ④ 宏替换都是在编译前由预处理程序完成的,因此宏替换不占运行时间。

                 ⑤ 宏替换中,实参不能替换括在双引号中的形参。

4、中止宏定义:

#define PI 3.14
main()
{
  ....
  #undef PI
  ....
/*以上PI的作用域从#define PI 3.14命令行开始,到#undef命令行结束。从#undef以后PI变成无定义,不再代表3.14了*/
5、文件包含:    

             #include "文件名"  或  #include <文件名>

             注意:

                   ① 在预编译时,预编译程序将用指定文件中的内容来替换此命令行。如果文件名用双引号括起来,                       系统先在源程序所在的目录内查找指定的包含文件,如果找不到,再按照系统指定的标准方式到                        有关目录中去寻找;

                   ② 如果文件名用尖括号括起来,系统将直接按照系统指定的标准方式到有关目录中去寻找;

                   ③ 在包含文件中还可以包含其他文件;

6、动态存储分配:    

    (1)malloc函数:

             pi=(int *)malloc(sizeof(int)) ;        

             pf=(float *)malloc(sizeof(float)) ;        

            sizeof用来计算数据类型所占字节数,如果成功分配,该函数返回一个指向存储区首地址的基类型为                 void的地址。若分配失败,函数返回空(NULL).

            注:C标准规定malloc函数返回值的类型为void *,函数的调用形式为:malloc(size),要求size的类型为unsigned int。

    (2)free:

            free(p)

    (3)calloc函数:

            calloc(n,size);

            要求n和size的类型都为unsigned int;

            ps=(char*)calloc(10,sizeof(char))

            sizeof用来计算数据类型所占字节数,如果成功分配,该函数返回一个指向存储区首地址的基类型为                 void的地址。若分配失败,函数返回空(NULL).

            注:C标准规定calloc函数返回值的类型为void *,n和size要求类型为unsigned int。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值