初始C语言——梦开始的地方

前言

  C语言是一门通用计算机编程语言,广泛应用于底层开发。作为长期位于各大编程语言排行榜前三的高级语言,C语言具有广泛性、简洁性、结构完善性等特有特点,作为B语言的改进版本,C语言也能直接通过内存地址进行内存操作,这是大多数高级语言所不具备的特点,而我们的C可以。因此C语言具有极为强大的功能和较为直接的底层逻辑,换句话说,只要把C学好了,就能掌握编程的核心技术,其他高级语言的学习如探囊取物。

图片来源:C生万物,编程之本! - 知乎 (zhihu.com)

正文 

    话不多说,让我们直接进入C语言的世界!

    我将展示很多初学者的启蒙代码,并将详细说明程序执行过程及各语句的作用 

代码语言:javascript
复制
#include<stdio.h>
int main()
{
	printf("Hello Word!\n");
	return 0;
}

 控制台(电脑屏幕)上很快就打印出了 "Hello Word!" 的字样。 (这是在VS 2019环境下展示的代码,打印指令为 Ctrl+F5)

下面是一个C语言程序从写入到输出的大概过程,因为电脑只认识0和1,所以编译器的作用就是通过预处理及编译把这些高级语言(比如C)所表达的意思翻译成二进制的形式,再通过链接将C语言标准库中的操作生成可执行文件,最后交给控制台输出即可。

   现在大家已经知道一个C程序执行所需要的大概步骤了,下面我将详细说明各语句的作用

#include<stdio.h>

  这是我们程序中的第一句,它的作用是声明C语言中的I/O库(输入与输出),因为后面的 printf打印函数需要这个库的支撑才能执行

#

这个叫井号,一般在手机拨号界面见的多,而在我们C语言中,#号称为预处理运算符,放在语句前是为了告诉编译器注意接下来的语句,让其执行包含或替换的操作。比如#include 指令就是告诉编译器看到这句话就要把我写的文件包含进来;#define指令就是告诉编译器看到这个宏就用前面以经定义好的内容替换等。

include<>

英文好的同学应该知道这个单词的意思,英文不好也没关系,我们现在有强大的翻译软件,include是包含的意思,目的很简单,告诉编译要包含接下来的内容,<>内部就是需要包含的内容(别问为什么不直接用中文“包含”,因为这些东西毕竟是别人西方发明出来的,所以还是慢慢习惯吧)关于上面提到的define,这个也是经常和#搭配使用,define是宏定义的意思,以后处理C4996问题的时候会出现,或者需要宏定义全局变量时也会用到

 stdio.h

这个需要拆开来理解,std是标准的意思,而io是I/O库的意思(input与output),给大家简单说一下C语言标准库这个事。家有家法,国有国规,无规矩不成方圆,C语言诞生之初因为没有统一的国际标准,造成大家用同一种语言可能会产生不同的写法。通俗来说就是A公司的C语言程序无法在B公司上运行,因为标准不同。为了解决这一问题,二十世纪八十年代,美国国家标准局(ANSI)制定了一套完整的美国国家标准语法(ANSI C),因为是1989年制定的,因此也称为C89。后来这套标准被国际标准化组织(ISO)所认可,称为“ISO/IEC 9899”,也就是C90标准。后来经过历次更新迭代,出现了C90、C11、C18等新标准,不过大多数编译器所采用的都是C90这套标准。在标准中定义了各种标准库,比如这个I/O库,里面就包含了 prinf 和 scanf 等函数,因为是标准化的,所以在使用时需要注意格式 。 “.h”表示头文件的意思,“.c”是表示C的源文件,“.cpp”则是表示C++的源文件。

int main( )

int

int 是整型的意思,表示这是一个整型函数,返回时需要返回整型,所以需要下文的return 0配合。一般我们返回0,表示正常返回,非0也行,但是返回非0表示异常返回。这里只是简单介绍下,不理解也没关系,后面会再次说明的。

main( ) 

 主函数,是每个程序中必备的东西,就像一个人的头一样,只能有一个,其他功能实现函数就像一个人学会的技能一样,比如洗衣做饭。main可以读作“梦”,我们一般将主函数读作梦函数(梦开始的地方),( )是配合函数出现的,这里可以写成 (void),表示main函数不需要参数。下面我将展示几种梦函数的写法,让大家有更深的理解。

图片来源:写C语言程序,不推荐void main()的原因 - 简书 (jianshu.com) 关于这个void main( )写法,作者当时也是深受其害,不过尽早改过来就行了

{ }

这是一对花括号,框起来的内容为函数体,通常是函数的主要部分,包含各种实现语句,比如我们这个启蒙代码中的 printf 和 return 就包含于此,在if选择语句或众多循环体中也会使用到 { } ,用以区分各功能结果之间从属关系,类似于界限。

printf("Hello Word!\n");

写了这么多,终于开始我们C语言的第一句话了。

printf 

是标准I/O库中的函数,主要功能是打印内容至控制台(屏幕),因为是标准库函数,所以在使用printf 时要严格按照标准格式来。( )是跟在函数后面的;" "是在( )内部出现的,而" "内部为我们需要打印的内容,这里我们想让电脑打印Hello Word!,直接输入在" "内部即可;\n是转义字符,表示换行,通常跟在我们想要输出的语句之后,让打印内容更加美观;最后末尾的这个小分号"  ; ",是C语言中语句结束的标志,如果你在写完一句话后没有加上这个分号,那么编译器肯定会报错。我会给大家看看C语言标准中 printf 的官方解释和几种常见错误。

上图是 printf 格式的官方解释 

 俗话说得好,失败是成功之母,刚开始学C语言,难免会犯各种错误,及时改正就好。

 ( )    " "    ;

这三个基本符号没啥好说的,注意别写成中文符号就行了。

return 0;

现在我们来到了程序的结尾,return 0 表示返回值为0,因为0是int型(整型),且0是正常返回,所以我们通常在主函数中return 0,在其他需要返回值函数中(比如计算两个数的和的函数,需要返回两个数的和),要具体问题具体分析,再决定返回值。

在上面这段代码中,add函数返回的值是5,因为传给add函数的两个数是2和3,将add的返回值赋给sum,并将其打印出来可以证明add函数返回值是5这一点。 

代码语言:javascript
复制
int add(int x, int y)
{
	return x + y;
}
int main()
{
	int sum = add(2, 3);
	printf("%d\n", sum);
	return 0;
}

小结 

以上便是我庖丁解牛般给大家介绍启蒙程序这段代码中各语句的含义,希望大家能够收获知识,如果觉得难以理解也没关系,只需要记得每一个工程中有且只有一个梦函数(main),而main函数的常规写法为: int main() {     return 0; } 在return 0; 前加入想要执行的语句即可。 如果要使用printf等标准库函数时,记得引出头文件#include<stdio.h> ,不同功能函数头文件不同,如果大家想学习更多标准库函数,我在这里给大家推荐个学习网站:cplusplus.com - The C++ Resources Network  C Plus Plus网站中有所有的头文件说明,只需要配合翻译软件即可畅快阅读!

总结 

  在本文中给大家详细介绍了C语言的基本知识,包括C语言特点、C语言标准、C语言主函数的各部分详解等,相信大家在阅读完本文后已经能够轻而易举的写出 Hello Word!了,快去试试吧!