#include<stdio.h> //预处理指令
int main() //主函数
{
char sentence[] = "hello world";//声明变量及赋值
printf("%s",sentence); //输出语句
return 0; //返回0作为程序正常结束的标志
}
关于include语句
先上结论,include是一个预处理指令,本质上是将它包含的相关文件整个拷贝并替换这个include语句。
举个例子
首先编写一个add函数(不知道什么是函数不要紧,先记住留个印象就好),作用为计算两个数的和,并保存在add.c文件中。
存放在与主函数同一个文件夹中。
运行结果如下
我们可以发现我们在C语言样例这个程序中成功调用了我们add文件中的add函数。我们平时引入的头文件本质上也是一个包含了很多函数的文件,只不过由于预处理指令一般位于程序顶部,我们习惯称之为头文件并以.h格式命名。
关于main()
函数
主函数(即main()函数)的写法有很多。
包括但不限于
main(){}
int main(){}
void main()
int main(void){}
但其中最标准的写法(C99)是 int main(void){}
,其他的写法都可能会有部分编译器不支持。(本文为了说明返回值的作用,选择了第二种写法)
关于注释
注释一般是关于程序的注解,用来说明某些代码的功能或实现方法,以此便于自己或他人理解代码。
注释有两种形式:
第一是/*省略号*/
,省略号部分就是注释的具体内容,/*
是注释开始的标志,而*/
是注释结束的标志,因此这种方式可以进行多行注释。
第二种是//省略号
,这种方式的做用是将//
后面的该行内容全部看作注释,因此只能进行单行注释。
被注释的语句会在编译阶段被忽视,因此我们也常常通过将有疑问的代码注释掉的方式来调试程序。
关于花括号、函数体和块
在C语言中,花括号{}是区分不同代码的标志(python中使用的是缩进),不同的函数或者是各种循环,都是通过花括号{}进行区分。
除此之外,相信细心的读者已经发现了,在每句完整的代码后面,都以分号“;”结尾,这是需要牢记的。
关于声明和定义
char sentence[] = "hello world";
上述代码中的char sentence[]
就叫做声明(在C语言中声明和定义是一起实现的,但在别的语言例如C++和Java中声明和定义会有所区别,这里仅作了解)。
事实上不同的数据类型在计算机中存储所需要的内存大小是不一样的,为了让计算机能正确分配内存,我们需要告诉计算机这个变量的类型,这就是声明的作用。(注意,所有变量都必须先声明再使用)。
按照以前的标准,我们需要把所有用到的变量都声明在程序的最开始,即声明完成后再开始写其他代码,但在最新的C99以及C11标准中,我们可以在任意位置声明变量,前提是在该变量使用前(某些版本较旧的编译器可能并不支持这种写法)。
关于赋值
char sentence[] = "hello world";
“=” 在C语言中不同于数学,并不是等于的意思,而是代表将“=”右边的的值赋给左边,在这里就是将字符串"hello world"赋值给字符数组sentence(字符串和字符数组之后会有详细的介绍)。
关于return语句
在这个程序中return后面的数字0就是这个主函数的返回值,当程序执行返回值语句时就代表当前函数的运行已经结束了,返回的0就是告诉计算机程序已经正常结束。
那这个返回值一定是0吗,当然不是。理论上这个值是可以自己确定的任意值,但我们约定俗成把正常运行记作0,且在后续的学习中我们需要用到不同的返回值,所以笔者建议最好还是不要太有个性。
结语
本文重点在于让读者对C语言的程序结构能有个大体的感知和印象,因此并没有作太多详细的展开,只是着重提了下笔者当时自己学C语言时比较困惑但老师又没有解释的include语句以及return 0 的作用。
后续会有一系列的文章较为全面总结C语言的方方面面,笔者的目的并不是写一个完全面对初学者的系列,而是尽笔者所能,从浅显到深入,希望对0基础的初学者和有一定基础的读者都有一定作用。
(新人博主,计算机本科在读,蒟蒻一枚,如有出错,望各位大佬指正,不胜感激)
(注:未经允许不得转载)
我理解的C语言 #6:选择控制结构与goto语句
我理解的C语言 #5:循环控制结构
我理解的C语言 #4:格式化输入与输出
我理解的C语言 #3:基本数据类型与类型转换
我理解的C语言 #2:运算符、表达式和语句
我理解的C语言 #1:常量与变量以及命名