重学 C 语言 HelloWorld 篇
前言
按照编程界的惯例,学习一门语言第一件事就是输出“Hello World”,这大概是专属程序员的情节(类似格子衫和植发)。
以下就是各个主流编程语言的 HelloWorld 写法,为什么要列出各个语言的 HelloWorld?我们比较他们的不同之处,从中学到语言设计哲学和编程理念。
网上各个入门教程中只会告诉你 HelloWorld 的每一行代码是什么意思,然后你一脸懵逼,为什么要这么写,为什么要引入包,而你的疑问得到的解答可能是以后学到了你就明白了。等你学完后上手实践一段时间你确实明白,开头要引入包,Java 要写 Class,你认为你明白了,但是你真的理解每一行代码后面得编程理念吗?
示例
C
|
|
Go
|
|
Java
|
|
PHP
|
|
Python
|
|
说明
以上主流编程语言大部分人都接触过,前 3 种都是编译型语言,后 2 种是解释型语言。
我们观察下前 3 种第一行,Java 和 Go 都有 import xx
,C 有include
,都是包含、引入的意思。
编程语言中,不同功能划分到不同模块中去,字符串、网络、http 等等,在不同的编程语言有不同的命名。Java 和 Go 中叫包,C 语言叫头文件。设计包目的是降低代码耦合度,提高代码复用性和可维护性。假设你要处理字符串,就只要在字符串的包中查找对应的方法。
为什么 PHP 和 Python 没有 import 包呢,因为它们为了提高开发者开发效率,把很多函数在语言内部实现了,你可以直接调用。
两者孰优孰劣,后面我们在讲编译型语言和解释型语言时会详细分析。
代码解析
第一行
|
|
C 语言后缀名 h 的文件就是头文件,它包含了函数声明和定义,没有具体实现的代码。
这句话的意思是你不用管也不用看这个方法怎么实现,代码细节是什么。你只需要按头文件中指定的函数的名字,传入的参数,返回的结果调用。
为什么要这样?比方说 A 写的函数 a 调用 B 写的的一个方法 b,
- a 直接依赖 b,如果 B 修改了 b 的返回结果类型,a 也需要修改。
- a 依赖 b 的头文件,b 修改返回结果类型后,为了兼容头文件,内部转换成头文件定义的返回类型,a 就不需要修改。
第二行
|
|
C 语言程序都需要包含 main() 函数, 代码从 main() 函数开始执行。main 函数就是进入一个房间的大门,所有函数执行的起点。Go 和 Java 也是这样设计的。
为什么需要 main 函数?一个文件中可以定义多个函数,编程语言怎么知道要从哪个开始执行呢?就像进入一个房间,肯定要先找大门,从门进入(别抬杠走窗户)。
int
是函数的返回值数据类型关键字,每个函数都要定义返回值类型,如果类型不符合要求,编译就无法通过,无法执行。有些函数执行所需的操作而不返回值,在这种情况下,关键字是void
。
main
是函数名,文件中函数名不能重复。
void
是参数,当函数被调用时,向参数传递一个值,这个值被称为实际参数。如果函数不包含参数,就传入void
。
第三行
|
|
printf
用于格式化输出到屏幕。printf() 函数在 "stdio.h"
头文件中声明。
第四行
|
|
用于表示退出程序。在程序逻辑执行完后,如果返回类型不是void
,就必须返回指定类型数据,这里要求必须返回int
类型数据,就返回0
总结
在介绍 C 语言 HelloWorld 后,和其他语言 HelloWorld 比较。介绍了语言本身的设计理念。详细解释 HelloWorld 中每一行代码的意义。万丈高楼平地起,这还只是学习 C 语言的第一步。
与君共勉。
微信公众号
加好友深入交流,解答问题。