c语言指令讲解,C语言快速入门 - Hello World 详解

本文详细解释了C语言基础程序HelloWorld的工作原理,包括printf函数、头文件#include<stdio.h>的作用,以及对' '换行符的理解。通过分析,读者可以对C语言的程序结构和基本输出函数有初步认识。
摘要由CSDN通过智能技术生成

目录

开始

上文我们讲了C语言的大致情况,以及编程的环境的搭建。而本文则着重讲解最基本的C语言程序 - Hello World。

程序

#include

int main()

{

printf("Hello World!\n");

return 0;

}

首先,我们来看下这个程序的核心printf。

观察一下printf这个单词,我们可以发下,这个f显得格格不入,这明显不是一个单词,所以我们把他分开来看,先百度下print的意思吧。

print

v. 在纸上印;打印;印刷;登载;刊登;发表

那么,我们可以把屏幕理解为一张纸,而printf就可以把括号里面的双引号里的内容打印到屏幕上来。

那么f又是什么意思呢,它是format的缩写。format是格式化的意思,那么printf意思就是以一定的格式输出文字到屏幕上,具体是怎么样个格式化法,大家在学习变量的时候就会知道了。

同时,我们将输出的内容和这个双引号里面的内容对比,可以发现,还是有一点区别的。我们输出的是Hello World!,而不是Hello World!\n,也就是说\n去哪里了呢?

如果大家了解过一点ASCII字符表(这里补充下什么是字符表:由于电脑内部储存信息的是二进制编码,而二进制和数字之间转换还是容易的,但是对于字母等符号,转就无法转换成二进制了,所以聪明的计算机科学家就想出了一个办法,将数字和字母对应起来,构成一张表,这样,电脑就能很方便的储存字符了。比如小写字母a对应的就是数字97,大写字母A则对应的是65。具体的还是希望点开那个蓝色的ASCII去看下百度百科里是怎么说的。)的话,应该知道,并不是所有字符都是可以看得到的,有些甚至还是起到控制的作用的。

而我们这里的\n就是一个特殊的字符,它的作用便是换行。

我们可以试下,不加\n会怎么样。

我们可以看到,编译运行后的结果是这样的,他没有换行,显得十分不美观。

db5e0709eb32

编译运行而加了\n就显得十分美观了。

db5e0709eb32

运行结果以后的学习中我们还可能遇到别的转义字符,具体的格式就是以\开头,后面跟一个别的字字符,详见蓝字里的百度百科。

printf("Hello World!\n");别忘了每句话的最后要加一个分号!!;的作用就是用于区分每个语句的,所以我们打完一个语句就要用分号来告诉编译器,我们这句话结束了。

那么,为什么printf后面要加个括号呢,这里我们得引入函数的概念。

函数

我们都学过数学里的函数的概念,初中我们接触到的函数便是形如

math?formula=y%20%3D%20x%20%2B%201之类的,而到了高中,函数变了个样,但换汤不换药

math?formula=f(x)%20%3D%20x%20%2B%201。那么,到了程序的世界里,函数就和后者很相似了。

本文不会很详细的介绍函数,但会将这个概念介绍给大家。

我们回到刚刚的那个printf中,看下他的结构。

首先,用双引号括起来的是文本,他是一个整体:"Hello World",而剔除这部分,剩下来便是printf函数的主体了:printf() 。是不是和

math?formula=f(x)神似呢?

区别在于,我们所熟知的

math?formula=f(x)他的

math?formula=x只能是个数字,而在程序里它可以是任何东西,而printf()里的那个“

math?formula=x”便是字符串(一堆字符的合集)。

那么,

math?formula=f(x)%20%3D%20x%20%2B%201里的

math?formula=x%20%2B%201去了哪里呢,其实printf这个函数将我们的字符打印到屏幕上的这个功能便是对应

math?formula=x%20%2B%201的。

这么一说,大家是不是对函数有了初步的认识了呢?

除了printf(),我们的程序中还有一个函数,那就是main函数,关于它的更多信息,本文暂时不介绍(一开始就讲那么多关于函数的知识不利于理解)。

至于那个return 0;,它和函数的关系也甚为密切,本文也暂时不讲。

然后我们来看下第一行#include 。

我们还是先百度翻译下include的意思。

include

v. 包括;包含;使成为…的一部分

也就是说,这句话是想来让我们的C语言文件来包含一个东西,那这个东西自然就是我们后面跟上的 ,而stdio.h分明就是以stdio为名,类型是h的文件啊。

这里,我们将再引入一个概念:头文件。而这个stdio.h正是这个头文件。

什么是头文件呢?我们赶紧看看下文吧。

头文件

其实上来就说头文件不是特别好,但是提前讲这个的概念确实可以帮助大家对C语言有一个更加深入的理解。

首先,我们先对这个Hello World程序进行一定的修改,也就是把第一行去了:

int main()

{

printf("Hello World!\n");

}

然后我们在编译的时候就会爆出这么一串

math?formula=%5Ccolor%7B%23FF00FF%7D%7Bwarning%7D警告。

hello_world.c: In function ‘main’:

hello_world.c:3:2: warning: implicit declaration of function ‘printf’ [-Wimplicit-function-declaration]

printf("Hello World\n");

^~~~~~

hello_world.c:3:2: warning: incompatible implicit declaration of built-in function ‘printf’

hello_world.c:3:2: note: include ‘’ or provide a declaration of ‘printf’

用中文来说,就是我们的编译器在尝试翻译我们的代码时,找不到printf是什么意思,他翻译不出来。

虽然说这个程序也是可以运行的,为什么呢,因为现在的编译器比较智能,它可以自动的在编译的时候帮你添加缺失的基本头文件,所以,你这样编译完之后的程序也能输出Hello World的。

那么为什么加了头文件编译器就能翻译成功了呢。

秘密,就在于头文件可以告诉编译器printf是什么,他能告诉编译器他能做什么,简单的,我们就可以把他理解为它是一张清单,里面列出了一些函数,可以教会编译器去怎么来翻译我们的C语言文件。

这就是头文件的作用。

那么,我们再回到那句#include 吧。

现在,我们已经知道了,这句话的作用是教会编译器输出文字,而stdio.h相当于一本教科书,编译器能够看懂它。

我们再来谈谈为什么要在include之前加一个#吧。

其实,这个#可以帮助编译器区分预处理器指令和普通的代码,其实也就是说,以#开头的代码叫做预处理器指令,是一种特殊的代码,为什么说它特殊呢?因为编译器首先看的就是以#开头的代码,然后再看我们的主体代码的,他有着“优先权”。

再来,就是这本“教科书”的名字了——stdio.h,.h很好理解,一个文件的后缀,header的缩写,代表的他是一个头文件。而stdio呢,我们再次开始我们的单词查询法(顺便提一下,计算机对英文要求很高,尤其是单词简写,要有一定的敏感性):首先std是standard的简写,是标准的意思,而io则是两个单词的缩写,分别是input和output,分别代表输入输出,所以stdio便是标准输入输出的意思,它里面定义了一些输入和输出的函数,比如我们的printf函数便是其中的标准输出函数之一。

那么,为什么是用<>而不是用""把stdio.h括起来呢,这里也是有区别的。在操作系统(一般指(类)Unix系统)内部,有着固定的地方存放头文件,而<>就是让C语言编译器去那个固定的地方读取头文件,而不是别的地方。

所以#include 就是让C语言编译器去那个特定的地方读取我们的标准输入输出头文件。

那么至于#include "文件名"呢,他则是从我们存.c的源代码文件的同一目录读取头文件(因为我们自己也可以写头文件,本文暂时不介绍),并不是从特定的目录读取。

结语

读完本文,大家应该对一个基本的Hello World有了一定的概念了吧,下一篇文章我们将继续探究什么是变量:《C语言快速入门 - 变量》。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值