C语言的组成:
一个C源程序是由多个.c文件和.h文件组成。

源程序:是指未编译的按照一定的程序设计语言规范书写的文本文件。.c文件:C源代码文件(源代码指的是一系列人类可读的计算机语言指令)。.h文件:头文件?
  1. .c文件的组成
    (1) 预处理指令
    以“#”开头的就是预处理指令
    预处理指令在程序编译之前就会事先做的处理。

    a.  文件包含命令#include 包含命令作用:就是把#include后面的那个文件中的内容在此处展开(复制粘贴)。#include <stdio.h>#include "02.h"上面两者都是文件包含命令,都是在特定的文件夹下(路径下)搜索相应的头文件,然后把该文件的内容在使用包含命令处展开,但不同的是,其搜索路径不一样。<>表示在系统标准的头文件路径(如:/usr/include...)下搜索,可以理解为官方路径。""表示先在工程的当前路径下搜索,如果没有找到的话,再去官方路径下搜索。b.  宏定义宏定义:定义一个宏宏:是一种批量处理的称谓。他就是一个用来替换别人的东西。宏定义的形式如下:#define 宏名 替换文本后续所有出现宏名的地方都将被替换为替换文本。宏有两种:1.   不带参数的宏例子:#define PI 3.14double area = PI * r * r;===> area = 3.14 * r * r;2. 带参数的宏语法:#define 宏名(参数) 替换文本例子:#define max(a,b) a > b ? a : bmax(a,b)作用是求出a和b之间的最大值max(2,3) --> 2 > 3 ? 2 : 3 --> 3int a = max(3,2) + 5;a = ?
    

    typedef是一个关键字,作用是为一种数据类型定义一个新的名字
    可以是基本类型,也可以是自定义类型。

    语法:
    typedef 现有的类型名(旧类型名) 新的类型名;
    —>新的类型名就和现有的类型名意义是一样的了

    使用typedef目的一般有两个:
    1. 给旧类型一个易记且意义明确的名字
    例子:
    typedef unsigned char uint8;
    typedef unsigned int uint32;
    2. 简化一些比较复杂的类型声明
    例子:

typedef struct student STU;struct student s;<===> STU s;struct student
{int num;char name[32];
}stu1,stu2,stu3;struct student stu;struct
{int num;char name[32];
}stu1,stu2,stu3;struct stu;//errortypedef struct student
{int num;char name[32];
}STU;
     int NUM[100];//定义了一个数组,数组名为NUM想定义一个和NUM一样类型的变量a:typeof(NUM) a;int[100] a; ---> int a[100];typedef int[100] NUM_T;--->typedef int NUM_T[100];//NUM_T是一个新的类型名,相当于int[100]NUM_T a; <===> int a[100];void (*p)(int,int)//定义了一个函数指针,指针名为ptypeof(p) p1;void (int,int)* p1; ---> void (*p1)(int,int)typedef void (int,int)* func_t -->  typedef void (*func_t)(int,int)//func_t是一个新的类型

总结:

int a;//a就是一个变量
typedef int a;//a就是一个类型,这个类型就是int,a就是int的别名int b[100];//b就是一个数组
typedef int b[100];//b就是一个新的类型名,等用于int[100]int (*p)(void);//p就是一个函数指针变量名
typedef int (*p)(void);//p就是一个新的类型名,等同于int (void) *
p p1;

typedef 与 define的比较:

                     typedef                     define 语法不同         末尾需要;                   末尾不需要;一条语句                  是一条预编译指令处理阶段不同  typedef在编译时处理           在预处理阶段处理作用不同        给现有的类型起别名           替换作用作用域不同       typedef只能在定义的作用域    任何地方都可以使用内使用对指针的操作  typedef int* pint;          #define pint int*不同         pint a,b;                   pint a,b;a和b都是int*              a是int*,b是一个int

c. 条件编译
条件编译一般我们放在.h文件中。

#ifndef xxxx//如果没有定义xxxx,那么就定义xxxx,那么在#endif之前的语句才会参与编译
#define xxxx//防止重复定义

#endif

(2) 声明
外部对象的声明

(3) 全局变量和函数的定义

2 . <xxx.h>文件的组成

.h文件接口描述文件
包含一些声明:
函数的声明、外部变量的声明、类型的声明…
头文件中一般不包含具体代码的实现,只是一个接口文件而已。

C语言学习笔记(9)之C语言的组成相关推荐

  1. C语言学习笔记-P1 初识C语言(2)

    C语言学习笔记-P1 初识C语言(2) C语言学习笔记-P1 初识C语言(2) 一.常量 1.字面常量 2.const修饰的常变量 3.#define定义的标识符常量 3.枚举常量 二.字符串+转义字 ...

  2. C语言学习笔记-P1 初识C语言(1)

    C语言学习笔记-P1 初识C语言(1) P1 初识C语言(1) 一.什么是C语言 1.定义 2.发展 二.第一个C语言程序 Hello World 三.数据类型 四.变量,常量 未完待续!!! P1 ...

  3. C语言学习笔记01:C语言基础语法_变量类型_类型转换

    文章目录 C语言第一天课程笔记 1. 内容安排 2. 课堂笔记 2.1 计算机硬件 2.2 计算机软件 2.3 编程语言和编译器 2.4 编程语言发展 2.5 C语言标准 2.6 C语言学习理由 2. ...

  4. C语言学习笔记一(C语言相关知识)

    C语言学习第一节 文章目录 C语言学习第一节 一.C语言发展史 二.C语言的特点 三.C语言标准 一.C语言发展史 C语言诞生于美国的贝尔实验室,由丹尼斯·里奇(Dennis MacAlistair ...

  5. C 语言学习笔记(三):C 语言开发环境搭建

    文章目录 一.Windows 二.Linux 2.1 VMware Workstation Pro软件简介及安装 2.2 安装 Ubuntu 系统 2.2.1 Ubuntu 下载 2.2.2 安装 U ...

  6. c语言双重for循环流程图_【C语言学习笔记系列】C语言编程狼追兔子问题代码解析!...

    问题描述 一只兔子躲进了10个环形分布的洞中的一个.狼在第一个洞中没有找到兔子,就隔一个洞,到第3个洞去找:也没有找到,就隔2个洞,到第6个洞去找:以后每次多一个洞去找兔子--这样下去,如果一直找不到 ...

  7. R语言学习笔记 07 Probit、Logistic回归

    R语言学习笔记 文章目录 R语言学习笔记 probit回归 factor()和as.factor() relevel() 案例11.4复刻 glm函数 整理变量 回归:Logistic和Probit- ...

  8. Lawliet|C语言学习笔记2——变量/数据类型/表达式

    C语言学习笔记2--认识C语言1 1.变量 a.变量的命名 <类型名称><变量名称> 存放数据的一个地方,用于参与后续的运算. 变量命名的规则:只能由字母.数字和下划线组成,且 ...

  9. C语言如何加缓冲,C语言学习笔记之输出缓冲

    在c语言中经常用到输出函数printf,当我们像往常一样在输出函数中输入我们的想要的输出的东西后加\n换行 验证结果如我们输出的一样 如果我们在后面加入死循环会不会出现这些语句呢 结果卡死了,可还是输 ...

  10. R语言学习笔记 06 岭回归、lasso回归

    R语言学习笔记 文章目录 R语言学习笔记 比较lm.ridge和glmnet函数 画岭迹图 图6-4 <统计学习导论 基于R语言的应用>P182 图6-6<统计学习导论 基于R语言的 ...

最新文章

  1. ubuntu/debian安装最新版docker和docker-compose
  2. 如何有效使用Project(1)——编制进度计划、保存基准
  3. linux 产生50-100之内的随机数
  4. DNA甲基化检测服务
  5. MySQL Binlog Mixed模式记录成Row格式
  6. 在Activity不可见时暂停WebView的语音播放,可见时继续播放之前的语音
  7. ug编程内公差和外公差是什么_工厂老师傅自学数控编程多年心得,希望你们少走弯路...
  8. 装双系统?不需要!教你在iMac上流畅使用Windows!
  9. springcloud(第三篇)springcloud eureka 服务注册与发现 *****
  10. 433MHz资讯一点通
  11. RESTful 接口设计规范
  12. 原创科幻短篇《霾星》
  13. ubuntu18.04安装cudnn出现错误:FreeImage is not set up correctly. Please ensure FreeImae is set up correctly
  14. passenger中的设置ssl
  15. Linux优秀软件整理 - 摘自Linux 开源中国
  16. NBA运动员球员数据分析
  17. 让单身狗犹如过情人节的“网易云日推”原来是这样生成的
  18. 资产管理可视化系统-RFID固定资产管理追踪方案-RFID资产管理解决方案-新导智能
  19. 词汇课程——导论(2)
  20. 刚安装好的CAD一定要做这几个优化设置

热门文章

  1. 应用COMSOL Multiphysics分析多分支缝初始裂缝起裂点
  2. 上交、上戏、同济、上外-上海四校一日游
  3. 6.1函数的定义和作用
  4. 学习笔记之——VIO与VINS-Mono
  5. R语言中的单因素协方差分析
  6. FZU Problem 1077 铁皮容器
  7. 黑夜的奇思妙想 idea java 文件分隔符\
  8. Haroopad中文显示问题
  9. 如何写一篇吸引人的美食营销软文?纯干货
  10. 杭电5597GTW likes function