C语言学习笔记(9)之C语言的组成
C语言的组成:
一个C源程序是由多个.c文件和.h文件组成。
源程序:是指未编译的按照一定的程序设计语言规范书写的文本文件。.c文件:C源代码文件(源代码指的是一系列人类可读的计算机语言指令)。.h文件:头文件?
.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语言的组成相关推荐
- C语言学习笔记-P1 初识C语言(2)
C语言学习笔记-P1 初识C语言(2) C语言学习笔记-P1 初识C语言(2) 一.常量 1.字面常量 2.const修饰的常变量 3.#define定义的标识符常量 3.枚举常量 二.字符串+转义字 ...
- C语言学习笔记-P1 初识C语言(1)
C语言学习笔记-P1 初识C语言(1) P1 初识C语言(1) 一.什么是C语言 1.定义 2.发展 二.第一个C语言程序 Hello World 三.数据类型 四.变量,常量 未完待续!!! P1 ...
- C语言学习笔记01:C语言基础语法_变量类型_类型转换
文章目录 C语言第一天课程笔记 1. 内容安排 2. 课堂笔记 2.1 计算机硬件 2.2 计算机软件 2.3 编程语言和编译器 2.4 编程语言发展 2.5 C语言标准 2.6 C语言学习理由 2. ...
- C语言学习笔记一(C语言相关知识)
C语言学习第一节 文章目录 C语言学习第一节 一.C语言发展史 二.C语言的特点 三.C语言标准 一.C语言发展史 C语言诞生于美国的贝尔实验室,由丹尼斯·里奇(Dennis MacAlistair ...
- C 语言学习笔记(三):C 语言开发环境搭建
文章目录 一.Windows 二.Linux 2.1 VMware Workstation Pro软件简介及安装 2.2 安装 Ubuntu 系统 2.2.1 Ubuntu 下载 2.2.2 安装 U ...
- c语言双重for循环流程图_【C语言学习笔记系列】C语言编程狼追兔子问题代码解析!...
问题描述 一只兔子躲进了10个环形分布的洞中的一个.狼在第一个洞中没有找到兔子,就隔一个洞,到第3个洞去找:也没有找到,就隔2个洞,到第6个洞去找:以后每次多一个洞去找兔子--这样下去,如果一直找不到 ...
- R语言学习笔记 07 Probit、Logistic回归
R语言学习笔记 文章目录 R语言学习笔记 probit回归 factor()和as.factor() relevel() 案例11.4复刻 glm函数 整理变量 回归:Logistic和Probit- ...
- Lawliet|C语言学习笔记2——变量/数据类型/表达式
C语言学习笔记2--认识C语言1 1.变量 a.变量的命名 <类型名称><变量名称> 存放数据的一个地方,用于参与后续的运算. 变量命名的规则:只能由字母.数字和下划线组成,且 ...
- C语言如何加缓冲,C语言学习笔记之输出缓冲
在c语言中经常用到输出函数printf,当我们像往常一样在输出函数中输入我们的想要的输出的东西后加\n换行 验证结果如我们输出的一样 如果我们在后面加入死循环会不会出现这些语句呢 结果卡死了,可还是输 ...
- R语言学习笔记 06 岭回归、lasso回归
R语言学习笔记 文章目录 R语言学习笔记 比较lm.ridge和glmnet函数 画岭迹图 图6-4 <统计学习导论 基于R语言的应用>P182 图6-6<统计学习导论 基于R语言的 ...
最新文章
- 【权值分块】bzoj1503 [NOI2004]郁闷的出纳员
- linux id 命令 显示用户id和组id信息
- springboot: Spring Data JpaRepository
- AlphaGo已经拿下围棋,创投界的“Master”何时出现?
- 柳编产业临沭谋定转型升级 农民丰收节交易会技能兴鲁
- python查看函数定义_从函数内函数定义看python的函数实现
- NOJ --138 找球号(二)
- BZOJ-1968 COMMON 约数研究 数论+奇怪的姿势
- Socket api接口--Send(),Recv()的长度问题
- ui界面表单设计素材模板,实用可临摹
- 快速上手,教你开发第一个基于 AutoML 的量化投资决策应用
- NumPy库---数组进阶操作
- matlab 匹配滤波器,应用于雷达系统匹配滤波器的matlab仿真详解.doc
- 统一通信系统解决方案
- 爬虫初学——爬取京东商品的评论(二)
- 家喻户晓的足力健,凭什么征服中老年人?
- BZOJ 4698 Sdoi2008 Sandy的卡片
- 知乎android客户端drawer布局探究
- WZOI-359字符串哈希
- 【TypeScript】必学基础