栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言学习笔记(9)之C语言的组成

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言学习笔记(9)之C语言的组成

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

源程序:是指未编译的按照一定的程序设计语言规范书写的文本文件。

.c文件:C源代码文件(源代码指的是一系列人类可读的计算机语言指令)。

.h文件:头文件?
  1. .c文件的组成
    (1) 预处理指令
    以“#”开头的就是预处理指令
    预处理指令在程序编译之前就会事先做的处理。

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

typedef 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)//定义了一个函数指针,指针名为p
		typeof(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 . 文件的组成

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1019610.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号