目录

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语言的基本结构(一)相关推荐

  1. 数据结构与算法:02 C#语言基本语法结构

    02 C#语言基本语法结构 知识结构: 1.数据类型 第一种分类: 简单数据类型:byte.short.int.long.float.double.char.bool 组合数据类型:struct.en ...

  2. 124页,UC伯克利大学胡戎航博士论文公布:视觉与语言推理的结构化模型

    来源:机器之心 本文约1500字,建议阅读5分钟 UC 伯克利大学计算机科学博士胡戎航(Ronghang Hu)的博士论文新鲜出炉,内容涉及视觉与语言推理的结构化模型. 视觉 - 语言任务(如基于图像 ...

  3. 四则运算c语言编程分支结构,C语言之分支结构(二)

    原标题:C语言之分支结构(二) 大家好!今天我们来学习if语句的嵌套结构, if语句的嵌套是指在if或者else的分支下有包括了另一个if语句或者是if-else语句,if语句的嵌套位置是灵活的,嵌套 ...

  4. 【Golang 基础】Go 语言的程序结构

    Go 语言的项目结构    一般,一个 Go 项目在 GOPATH 下,会有如下三个目录 . ├── bin // 存放编译后的可执行文件 ├── pkg // 存放编译后的包文件 └── src / ...

  5. python语言结构_Python语言表示语句结构时采用

    Python语言表示语句结构时采用 答: 缩进 夏代出现专门的教射和习射的场所是 . 答:序 五行相生相克,又分别对应五种颜色,其中火对应颜色() 答:赤 非暴力沟通中的"表达情绪" ...

  6. 关于C语言中的结构体内存对齐与位段问题

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 结构体的内存对齐与位段 一.结构体的内存对齐 1.为什么会有内存对齐? 2.如何内存对齐 3. 如何在设计结构体的时候,既要 ...

  7. java继承构造_Java语言的继承结构

    Java语言的继承结构 导语:Java语言找那个多个具体的对象,不断的向上抽取共享的内容,最终形成了一个体系,就是继承体系.下面是Java语言的继承结构,欢迎参考! (1)把很多类的相同特征和行为进行 ...

  8. C语言如何获取结构体中指定元素的大小?sizeof ( (X*)0 ) -> Y)(空指针操作)

    获取结构体的大小,这好办,这样就可以了: #include <stdio.h>struct user {char name[20];char age[10]; };int main() { ...

  9. c语言打印树形图形,数据结构C语言版树形结构.ppt

    数据结构C语言版树形结构 St中元素 算法执行的操作 ch AC k=2 , AC 建立E结点,因k=1,将其作为C结点的左孩子结点 E AC C结点进栈,k=1 ( A 建立C结点,因k=2,将其作 ...

  10. c语言 char c1,c2; for (c1='0',C语言-5循环结构(PPT)复习课程.ppt

    C语言-5循环结构(PPT)复习课程.ppt 第五章 循环结构程序设计;课程引入;第五章 循环结构程序设计;5.1 while 语句;例1:求;1. do-while循环语句的形式 do 循环体 wh ...

最新文章

  1. 《C++面向对象高效编程(第2版)》——2.29 泛化关系(is-a)
  2. c++网络通信(与服务器通信聊天)和c#网络通信
  3. 关于JQuery全选/反选第二次失效的问题
  4. Sublime Text 3 - 设置自动换行
  5. 【时间序列分析】01. 时间序列·平稳序列
  6. java代码下划线是啥意思_java类名加下划线
  7. 4399c++游戏开发2023届实习笔试
  8. npm安装任何包都报错解决方法
  9. Latex 如何给数学公式进行编号
  10. Android群英传笔记——第十章:Android性能优化
  11. 上传即可使用的在线壁纸采集网页源码
  12. 华为云SNAT 操作(脚本执行)
  13. 金蝶eas系统服务器地址,金蝶eas服务器地址
  14. 小恐龙游戏挑战:第11天-简单画好小恐龙并上色
  15. 下载阿里巴巴商品详情页的主图和详情图(Java版本)
  16. Vue框架 MIinUI 配置
  17. STM32 GPIO 详解
  18. 电力系统非线性控制_电抗器在电力系统中的应用
  19. 编程课是什么?该不该给孩子报?
  20. C#练习题答案: 摩门经【难度:2级】--景越C#经典编程题库,1000道C#基础练习题等你来挑战

热门文章

  1. Kinect v2.0原理介绍之八:高清面部帧(1) FACS 介绍
  2. 互联网时代,政府如何应对网络舆情监测危机
  3. 机器学习实战 基于_[编程]-机器学习实战-概览
  4. 厉害了!印度老头:从雅虎挖来陆奇,All in云业务,带领微软重生!
  5. 【管理类联考➕英语二】2020考研高分必看
  6. 什么是epub格式,有什么好用的epub阅读器
  7. STemWin中显示中文与图片
  8. python画二维温度云图_python定制后处理云图
  9. c winform 打印 html,C# Winform 打印控件PrintDocument
  10. 一个“追跌卖涨”的股票筛选程序