您的位置:首页 > 理论基础

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

2018-03-22 19:32 661 查看
声明:本篇文章只是个人知识盲区、知识弱点、重点部分的归纳总结,望各位大佬不喜勿喷。梳理顺序是按照书籍的实际顺序梳理,转载请注明出处。作者: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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: