C语言的基本结构(一)
目录
1. C语言程序框架
1.1. 程序编译的过程
1.2. C语言程序结构分析
1. C语言程序框架
C程序一般由头文件、主函数和函数三部分组成;从最简单的程序开始,对于大多数程序语言,第一个入门编程代码便是"Hello World!",一步一步的分析程序的编写到编译是进行的一个什么样的过程,程序如下所示:
#include<stdio.h> //头文件int main(void) //主函数,程序的入口函数
{/*代码区*/printf("hello world\n"); //使用了printf函数return 0; //返回0
}
程序运行效果如下
1.1. 程序编译的过程
程序编译步骤:预处理 --> 编译 --> 汇编 连接
(1)预处理在程序编译之前做的准备工作,主要包括:头文件的包含(include),宏定义(define,替换),条件编译(ifdef,ifndef)将源文件通过预处理生成预处理文件(xxx.i)
(2)编译: 将预处理过后的文件(预处理文件)编译生成汇编文件(xxx.s)
(3)汇编: 将汇编文件(xxx.s) 通过汇编 生成目标文件(xxx.o)
(4)链接: 通过链接过程,将目标文件生成可执行文件
1.2. C语言程序结构分析
- 头文件说明
#include <stdio.h>
(1)# : 预处理指令
(2)include : 文件包含指令,只能包含头文件,
xxx.h ----头文件
xxx.c ----源文件
(3)<>,"" : 表示搜索头文件的一种方式
< > : 库文件,库函数所在的头文件,系统自带的头文件表示程序会在系统目录(软件安装的目录)中查找头文件
"" : 适用于程序员自定义的头文件
(4)stdio.h : 标准输入输出的头文件,有关标准输入输出函数的声明都在该文件
(5)头文件:关于一类功能相近的函数的声明信息
如:pow()--求幂, sqrt()--开方
关于数学计算的功能 ------ #include <math.h>
关于字符串操作的功能 ------ #include <string.h>
关于输入输出功能 ------ #include <stdio.h>
注意:用到那个函数,则需要包含该函数的所在头文件
- 主函数的理解
int main(void) //main 函数
{.......return 0;
}
int 指明main()函数的返回值类型,表示函数的返回值类型是int型。函数名后面的括号一般包含传递给函数的信息,没有则表示为空,也可以写void
(1)int main(void),C99版本的C语言允许这种写法。
(2)main(),这种形式C90标准允许,但是C99标准不允许,所以不要采用这种形式
(3)void main(),有些编译器允许,但是没有任何标准考虑接受这种形式。
所以最好采用标准形式:int main(void)。
主函数除了上述写法,还有另一种写法,如下代码所示:
int main(int argc,char *argv[]) //主函数,程序的入口函数
这也是最常见的一种写法;第一个入参为命令行参数个数,第二个入参为命令行参数数组;通常用于实现需要从命令行获取参数的功能,这在嵌入式编程中运用比较广泛;但是在C89/C99/C11标准文档中只提供了两种main函数的写法:
int main(void) //主函数,程序的入口函数
{//代码区
}
int main(int argc,char *argv[]) //主函数,程序的入口函数
{//代码区
}
main函数结论:
1) C语言程序执行过程中,只执行main函数说明主函数是程序的入口函数,即程序是从主函数开始执行的,而不是从第一个函数开始执行;
2)main函数中语句执行。其他函数体的内容不执行;
3)main函数执行结束,意味着整体的C程序执行结束;
4)一个c程序,可以有main函数,有并且只有一个main函数,如果是两个则会出错;
5)main()书写只能是这样,不能写成其他形式;
6)主函数是自动调用,程序运行,主函数自动调用了,子函数必须人为调用才行
- 注释
1. 功能:解释说明,代码的调试
2. 特性:被注释掉的代码不再进行编译,即使有语法错误,也不会检测出来
3. 形式: 单行注释:// 之后的内容为被注释的内容。
多行注释: /**/ 其中的内容为被注释掉的内容。
4. 用法:
(1)对文件注释
(2)对函数注释
(3)对程序语句注释
(3)其注释的方法可以参考如下的编程规范
在文件开头之前注释:对文件的整体注释
/****************************************************************************
**文件名:
**文件的功能:
**文件的版权:
**文件说明:
**文件编写者:
****************************************************************************/
对函数的注释:在函数之前
/****************************************************************************
**函数名:
**函数的功能:
**函数的形参:介绍每个形参的作用,意义
**函数的返回值:对每个返回值进行说明
**函数使用注意事项:
**函数的方法说明:简单介绍以什么样的方法实现函数的功能,也可以不用介绍
**函数的版本号:
**编写作者:
**修改日期:
****************************************************************************/
总结
C语言的基本结构(一)相关推荐
- 数据结构与算法:02 C#语言基本语法结构
02 C#语言基本语法结构 知识结构: 1.数据类型 第一种分类: 简单数据类型:byte.short.int.long.float.double.char.bool 组合数据类型:struct.en ...
- 124页,UC伯克利大学胡戎航博士论文公布:视觉与语言推理的结构化模型
来源:机器之心 本文约1500字,建议阅读5分钟 UC 伯克利大学计算机科学博士胡戎航(Ronghang Hu)的博士论文新鲜出炉,内容涉及视觉与语言推理的结构化模型. 视觉 - 语言任务(如基于图像 ...
- 四则运算c语言编程分支结构,C语言之分支结构(二)
原标题:C语言之分支结构(二) 大家好!今天我们来学习if语句的嵌套结构, if语句的嵌套是指在if或者else的分支下有包括了另一个if语句或者是if-else语句,if语句的嵌套位置是灵活的,嵌套 ...
- 【Golang 基础】Go 语言的程序结构
Go 语言的项目结构 一般,一个 Go 项目在 GOPATH 下,会有如下三个目录 . ├── bin // 存放编译后的可执行文件 ├── pkg // 存放编译后的包文件 └── src / ...
- python语言结构_Python语言表示语句结构时采用
Python语言表示语句结构时采用 答: 缩进 夏代出现专门的教射和习射的场所是 . 答:序 五行相生相克,又分别对应五种颜色,其中火对应颜色() 答:赤 非暴力沟通中的"表达情绪" ...
- 关于C语言中的结构体内存对齐与位段问题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 结构体的内存对齐与位段 一.结构体的内存对齐 1.为什么会有内存对齐? 2.如何内存对齐 3. 如何在设计结构体的时候,既要 ...
- java继承构造_Java语言的继承结构
Java语言的继承结构 导语:Java语言找那个多个具体的对象,不断的向上抽取共享的内容,最终形成了一个体系,就是继承体系.下面是Java语言的继承结构,欢迎参考! (1)把很多类的相同特征和行为进行 ...
- C语言如何获取结构体中指定元素的大小?sizeof ( (X*)0 ) -> Y)(空指针操作)
获取结构体的大小,这好办,这样就可以了: #include <stdio.h>struct user {char name[20];char age[10]; };int main() { ...
- c语言打印树形图形,数据结构C语言版树形结构.ppt
数据结构C语言版树形结构 St中元素 算法执行的操作 ch AC k=2 , AC 建立E结点,因k=1,将其作为C结点的左孩子结点 E AC C结点进栈,k=1 ( A 建立C结点,因k=2,将其作 ...
- c语言 char c1,c2; for (c1='0',C语言-5循环结构(PPT)复习课程.ppt
C语言-5循环结构(PPT)复习课程.ppt 第五章 循环结构程序设计;课程引入;第五章 循环结构程序设计;5.1 while 语句;例1:求;1. do-while循环语句的形式 do 循环体 wh ...
最新文章
- 《C++面向对象高效编程(第2版)》——2.29 泛化关系(is-a)
- c++网络通信(与服务器通信聊天)和c#网络通信
- 关于JQuery全选/反选第二次失效的问题
- Sublime Text 3 - 设置自动换行
- 【时间序列分析】01. 时间序列·平稳序列
- java代码下划线是啥意思_java类名加下划线
- 4399c++游戏开发2023届实习笔试
- npm安装任何包都报错解决方法
- Latex 如何给数学公式进行编号
- Android群英传笔记——第十章:Android性能优化
- 上传即可使用的在线壁纸采集网页源码
- 华为云SNAT 操作(脚本执行)
- 金蝶eas系统服务器地址,金蝶eas服务器地址
- 小恐龙游戏挑战:第11天-简单画好小恐龙并上色
- 下载阿里巴巴商品详情页的主图和详情图(Java版本)
- Vue框架 MIinUI 配置
- STM32 GPIO 详解
- 电力系统非线性控制_电抗器在电力系统中的应用
- 编程课是什么?该不该给孩子报?
- C#练习题答案: 摩门经【难度:2级】--景越C#经典编程题库,1000道C#基础练习题等你来挑战
热门文章
- Kinect v2.0原理介绍之八:高清面部帧(1) FACS 介绍
- 互联网时代,政府如何应对网络舆情监测危机
- 机器学习实战 基于_[编程]-机器学习实战-概览
- 厉害了!印度老头:从雅虎挖来陆奇,All in云业务,带领微软重生!
- 【管理类联考➕英语二】2020考研高分必看
- 什么是epub格式,有什么好用的epub阅读器
- STemWin中显示中文与图片
- python画二维温度云图_python定制后处理云图
- c winform 打印 html,C# Winform 打印控件PrintDocument
- 一个“追跌卖涨”的股票筛选程序