当前位置: 首页 > article >正文

Hello World分析

文章目录

  • 代码分析
    • 源代码
    • 代码解析
    • 注释
      • 单行注释
      • 多行注释

代码分析

源代码

  以下就是我们上一个文章中编写过的程序。大家一定注意到,这个代码相比上一个代码多了很多的内容,这些内容并不影响程序的运行,因为这些是注释内容,本章节会为大家分析这个程序,以及教大家如何注释。注释是一个伟大的语言,我觉得它对于程序的意义是非凡的。因为,如果没有注释,可能过不久你写过的程序某一句代码,神都不能理解。

#include <stdio.h>

//#include 表示要包含头文件 头文件里面一般都是函数的声明
//<stdio.h>  标准输入输出头文件

//int 函数的返回值类型 先不用管 --后面讲函数的时候会讲
//main 主函数 是程序的入口 有且仅有一个
//() 里面是main函数的参数列表 --先不用管   也可以不写  但是括号必须写
//{} 里面是函数体 也就是要执行的内容
int main(int argc, const char *argv[])
{
	//printf 是系统给我们提供的输出的函数 可以将内容输出到 终端
	//"" 里面的就是想输出的内容  其中 \n 表示换行 也就是回车
	printf("hello world\n");//C语言中 每条指令后面必须要有 分号 ;

	//函数的返回值  先不用管
	return 0;
}

//单行注释 注释是不会被编译和执行的

/*
	多行
	注释
*/

#if 0
	多行
	注释
#endif

代码解析

  这个程序比较简单,语句较少,所以我们逐句分析。

#include <stdio.h>
  这一行是导入一个名为stdio.h的头文件。
  #include的作用就是导入头文件。
  <>用于标识这是一个标准的头文件,如果你见过一些C/C++的程序代码,你会发现还有使用“ ”导入头文件的方式。这两种符号的不同通常用来指明导入的头文件是标准头文件,还是用户自定义的头文件。
stdio.h是一个标准的输入输出头文件,里面定义了输入输出的一些函数,导入这个文件,我们就可以使用里面定义好的东西。简单来说就是拿来主义,你有的函数,我不用自己写了,我导入了你的头文件,我就可以直接用。新手不必纠结里面的内容,后期学习过程中就会理解。
int main(int argc, const char *argv[])
  这一行是程序执行的入口。简单来说,程序执行,首先就要进这个门,我们称之为main函数,所以说main函数是程序执行的入口函数。这一行目前先死记硬背,后面学习了函数才能深入理解意思,在这里不增加负担。
{
}
  在下面就是这个大括号里面的内容,大括号在main函数的下面,表示属于main函数,main函数是入口,大括号的第一句就是程序执行的第一条实际意义的语句
printf(“hello world\n”);
  这一行printf就是stdio.h中的一个标准输出函数,可以将()内的内容输出到控制台显示出来。输出的内容用“”括住。\n是一个转义字符,使用这两个字符标识一个换行符号的意思,将它原本的意思改变了,就称之为转义字符,后面你还会学到其他转义字符,基本都是以\加上一个字符的形式。
  ()里的内容是hello World!所以你程序执行以后显示的是这个,试着修改里面的内容看看是否显示发生变化,试着删除\n,看看程序的执行效果。
  ;标志着一句代码的结尾,类似于我们尝试用的。一样。
return 0;代表程序运行结束了,返回了一个0,从main函数进来,执行了一些代码,然后带个0回去了。

注释

  C语言支持单行注释和多行注释,注释不影响程序的执行。还记得吗,在上一篇文章中说过,分布编译的预处理阶段就会删除注释。实际上分布编译和一步编译所做的内容是一样的。只是指令分为一步和四步的区别。

单行注释

  //后面的内容就是注释,由于是单行注释,一旦换行,换行后的内容就不是注释内容了

多行注释

  C语言支持两种多行注释,一种是\* *\,在两个星之间的内容就是注释的内容。
  还有一种#if 0 #endif。在0下面,#endif之前的内容就是注释。这其实是一种预处理的判断,通常不用做常规注释。这种注释常用来注释代码,比如你之前写好的功能,然后客户只给了一部分功能的钱,删掉代码的话,客户付完钱,你还要再次把代码写上去。删除会增加你的工作量,就可以使用这种方法,注释代码,当客户再次付钱时,把0改成1,代码就不被注释了。所以这种注释用来注释代码非常好用。


http://www.kler.cn/news/135720.html

相关文章:

  • iceberg学习笔记(2)—— 与Hive集成
  • webSocket基于面向对象二次封装
  • vue3基于vite打包
  • echarts 折线图内容区域渐变、曲线平滑
  • MyBatis 事务源码分析
  • 2024年软件测试面试必看系列,看完去面试你会感谢我的!!
  • [Jenkins] Docker 安装Jenkins及迁移流程
  • nginx代理本地服务请求,避免跨域;前端图片压缩并上传
  • ajax,axios,fetch
  • Nodejs--Express框架使用
  • 编程刷题网站以及实用型网站推荐
  • Oracle Data Redaction和Oracle Data Pump
  • C#asp.net考试系统+sqlserver
  • 设计模式-创建型模式-单例模式
  • Flink之OperatorState
  • Android MQTT开发之 Hivemq MQTT Client
  • 全志R128内存泄漏调试案例
  • 鸿蒙4.0开发笔记之DevEco Studio之配置代码片段快速生成(三)
  • 【Python 千题 —— 基础篇】输出可以被5整除的数
  • 嵌入式QTGit面试题
  • 计算机毕业设计选题推荐-高校后勤报修微信小程序/安卓APP-项目实战
  • 可逆矩阵的性质
  • 获取阿里云Docker镜像加速器
  • Arduino驱动DS18B20数字温度传感器(温湿度传感器)
  • OpenCV快速入门:直方图、掩膜、模板匹配和霍夫检测
  • 第四篇 《随机点名答题系统》——基础设置详解(类抽奖系统、在线答题系统、线上答题系统、在线点名系统、线上点名系统、在线考试系统、线上考试系统)
  • AtCoder Beginner Contest 329 题解A~F
  • 【数据机构】最小生成树(prim算法)
  • Harmony Ble 蓝牙App (一)扫描
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全