C 语言简介

罗大富 BigRich大约 7 分钟C/C++

在生活中,许多工作都要遵照一定的程序完成。例如早上起床后的穿衣、刷牙、洗脸、 梳头、吃早饭就是一个程序;做菜时的洗菜、切菜、炒菜、放盐、出锅也是一个程序。

程序就是一系列的操作步骤。计算机要实现某个功能也必须遵照一定的程序。然而遗憾的是,如果我们不会编写程序,计算机就只有遵照别人编写的程序来工作,而我们则只能在别人编写的程序的控制下使用计算机,只能成为计算机的奴隶。

你想摆脱别人程序的束缚,彻底地驾驭计算机吗?你想让计算机服从你的指挥,完全遵照你的意愿来工作吗?你想由计算机的奴隶变成它真正的主人吗?从今天开始,让我们走进计算机编程这个神秘的世界,一起掌握编程的本领、享受编程的乐趣、挖掘计算机更深层的魅力!

认识 C 语言代码

下面是 C 语言中最简单的代码,作用是运行以后在命令行中打印出 Hello World!,代码如下:

#include <stdio.h>

int main() {
    printf("Hello World!\n");
  	return 0;
}

我们先来分析以上每行代码的作用,这段代码有以下 4 个知识点:

  1. 预编译指令:在 C 语言中,预编译指令 是在编译之前由预处理器处理的指令。预编译指令 以井号 # 开头,用于对源代码进行一些预处理操作,如包含头文件、定义宏、条件编译等。该程序的第一行就是一条预编译指令:

    #include <stdio.h>
    
    • # 开头表示这是一条预编译指令;
    • include 在英文中是包含的意思,在 C 语言中用在编译之前包含一个文件;
    • stdio 是标准输入输出库,全称 standard input/output
    • .h 后缀的文件叫做 头文件,h 是 header 的缩写。头文件就像代码的「使用说明书」,告诉编译器程序里需要用到哪些现成的工具(函数、常量、数据类型),让编译器能正确理解和处理这些内容。

    因此,这行代码的作用是包含标准输入输出库的头文件,告诉电脑我们会用到哪些函数,需要放在程序最开头,在程序运行之前可以提前把这些函数给找出来,目的是让我们可以使用标准输入输出库的功能。

    什么是输入输出呢?

    我们可以把想计算机传递信息的过程叫做输入,比如打字,点击鼠标等;

    输出则是计算机把信息传递给我们,比如 printf() 函数,作用就是在屏幕上格式化打印内容。

  2. 入口函数 int main()

    int main() {
        // 程序代码
        return 0;
    }
    

    虽然这几行代码没有任何实际功能,但是会在你学习 C 语言的过程中一直出现,对于刚刚入门的小白来说,可能有些难以理解,那也不是什么问题,因为我们至少也需要学完函数才可以开始理解这段代码的含义。当前阶段,我们只需要把他当作固定框架,在每次写新的 C 语言程序的时候,把这几行代码敲出来就可以了。

    我们先来看这个 main(),main 是一个函数的名字,也就是函数名,而函数是用来执行某一特定功能的代码块,但 main() 函数比较特殊,他是整个程序的入口,操作系统需要执行我们的程序,但是我们的程序中可能写了很多的代码,那么电脑就需要知道从哪里开始执行才可以,也就是程序的入口,而这个入口点就是 main() 函数。

    main() 函数可以放置在任意位置,并且main() 函数必须有,且只有一个。一个程序没有 main 函数或有两个以上 main 函数都是错误的。

    main 字段后面紧接着一对小括号 (),括号中可以放置函数中需要用到的参数,参数是函数在执行时外部传递给函数的值,但是这里的括号是空的,说明 main() 函数不接受任何参数,尽管没有传递参数,这个括号也不能省略。

    main 字段必须小写。 C 语言是区分大小写的,换句话的意思就是,在 C 语言中,大写字母和小写字母的含义是完全不同的。如将 main 写为 Main,就是两个概念。不仅对 main,以后要学习程序中的其他元素也是严格区分字母大小写的,同学在编写程序时要特别注意,一定不要随便篡改字母的大小写。

    小括号 () 的后面跟着的是花括号 {},花括号 {} 中的代码也被称为 函数体,也就是这个函数具体要执行的功能代码,可以简单的理解为我们要让计算机做的事情,这些功能代码一定要写在 return 0 之前,写在 return 0 之后的代码是不执行的。

    在上述代码中,我们可以看到函数体代码前面有缩进,这个属于是编程规范,用来增加代码的可读性,一般是 2 个空格、4 个空格或者是 1 个 Tab。

    printf("Hello World!");      // 使用 printf() 函数,打印 Hello World! 到命令行中
    return 0;                    // return 表示返回值的意思
    print("return 0 之后的代码")// 无法执行
    

    main 函数中要执行的代码一定要写在 return 0 之前,写在之后是无效的。

  3. 输出语句 printf()

    print 表示打印,f 是 formatted 简写,printf 就表示格式化输出的意思。

    如果我们需要打印一段话到控制台,那么就需要使用 printf(内容) 来完成,这其实就是一种函数调用,但是现在我们还没有接触到,我们注意到括号里面的内容就是我们要打印到控制台的内容:

    printf("Hello World!\n");   //注意:最后需要添加;来结束这一行,注意是英文的分号,不是中文的!
    

    双引号 "" 中的内容被称为字符串,printf() 会把双引号中的内容原封不动地输出。

    \n 是转义字符,表示换行。

    调用 printf() 函数与 return 0 语句后面都使用了分号,这里的分号就相当于是中文里的句号。正如在句子末尾加上句号才能构成完整的一句话,C 语言中也需要在末尾加上分号构成正确的语句(statement)。

  4. 使用英文的标点符号 (){};"" 均为英文标点,输入时一定要记得切换为英文输入法。

    中英文标点符号的区别
    中英文标点符号的区别

    使用中文标点会出现以下报错:

Clion 编码格式常见问题

最后还有一点需要注意的就是,我们在调用 printf() 函数打印汉字的时候,打印出来的内容和输入的内容不一致,如下图:

printf 中输入内容与控制台打印的内容不同
printf 中输入内容与控制台打印的内容不同

这是因为编码格式的问题,我们只需要把 UTF-8 换成 GBK,重新运行一下就可以正常显示了。点击 Clion 右下角的 UTF-8,将其切换为 GBK 即可。

上次编辑于:
贡献者: 罗大富BigRich