Skip to content

C语言入门与进阶

初识C语言

(一) 简介

  C语言是一种通用的、面向过程的编程语言,具有高效、灵活、可移植性强等特点。它诞生于1972年的贝尔实验室,由 Dennis Ritchie 在B语言的基础上开发而来。C程序的源代码文件通常使用 .c 结尾。

(二) 语言标准

1. K&R C

  1978年,Ritchie 和程序专家 Kernighan 合写了著名的The C Programming Language,将C语言推向全世界,由这本书定义的C语言后来被人们称作 K&R C

2. ANSI C(又称 C89 或 C90)标准

  1994年,ANSI/ISO联合委员会(C9X委员会)修订并发布了一套C标准。

3. ISO C(又称 C99)标准

  1999年,ISO(国际标准化组织)发布了C99标准,并最终发布了C11标准。

(三) 程序设计步骤

  相信有不少同学是第一次接触编程语言,所以我觉得还是有必要在这里大概描述一下基本的C语言编写步骤,以让大家对这门面向过程的语言有大致的理解。

1. 定义程序的目标

  C语言是一种面向过程的编程语言。在编写代码时,通常按照解决问题的流程逐步编写代码,这与我们日常的思维方式相似。

  在动手写程序之前,首先自己要明确自己想做什么,思考你的程序需要哪些东西,要进行哪些计算和控制,以及程序应该返回给你什么信息。

2. 设计程序

  想清楚程序要做什么之后,就应该考虑如何用程序来完成它。设计程序时,需要考虑程序中需要哪些变量,以及这些变量需要如何存储和操作。

3. 编写代码

  在设计好程序后,我们就可以编写代码来实现它。也就是把刚才的思路用C语言来实现。

  在开始编写之前,确保你的输入法已经调到了英文模式,对人来说英文的标点符号可能和中文的大差不差,但是对于机器来说,英文标点和中文标点截然不同。

  切记,程序最好要有必要的注释(必要的注释,而不是什么都加注释),否则可能会出现今天这堆代码只有你能看懂,明天一觉醒来这堆玩意你自己也看不懂的情况(尤其是代码很长或代码分成了多个文件的时候)。也有可能修改的时候动了这个忘了那个,改掉一个bug多了三个bug。

4. 编译

  这一步是由我们的编译器自动完成的,我们只需要点击 编译 (有的编译器甚至没有这个按钮,直接点 运行 按钮就行了)

5. 运行程序

  编译完成之后,我们就能获得一个可执行文件(.exe),可以在IDE中通过菜单中的选项来执行这个文件,也可以在命令行中使用指令或双击运行这个文件。

6. 测试和调试程序

  正常情况下,程序能正常运行。但是,有时候,甚至是大多数情况下,程序会出现一些奇奇怪怪的问题(bug)。查找并修复程序错误的过程叫调试。逐行执行代码并查看你的变量的数值或者循环的次数,通过这种方式,我们能精确地发现问题在哪里。

  试着建个文档,把自己犯过的错记下来,未来某天再看这个文档的时候,说不定会有意外的收获。(刚开始可能出现一些简单的错误,比如 main 写成 mianstdio 写成 studio 之类的,我们都犯过这样的错误。但是随着学习进度的推进,简单的错误就不会再出现了)

C语言概述

  上一章我们对C语言的历史和设计思路有了大致的概念,这一章我们来聊聊C语言中的一些名词和基本概念。

(一) 第一个C语言程序

  下面我们来看一个基础的C语言示例,看不懂也没关系,后面会拆分开详细讲解

c
#include <stdio.h>//引入名为stdio的文件的内容,stdio是C语言的标准库
int main(void)//main是主函数,也是我们程序的入口
{//函数体开始
    //在两个斜杠//后面的字符都是注释,是给人看的,编译器编译的时候会跳过它
    //每一行末尾记得加分号,表示这行代码已经写完了
    //下面创建一个名为num的变量,这个变量是int(整数)类型
    int num;
    //给变量num赋值为1 
    num = 1;
    //调用printf函数,输出 Hello World!
    printf("Hello World!");
    //返回0,程序结束
    return 0;
}//main函数结束

(二). 细节剖析

  看完上面那个程序,也许你有很多疑惑,下面我们把它拆分开细细说说:

1. #include <stdio.h>

  #include <stdio.h> 这行代码是一条C预处理器指令,说白了就是编译器在处理代码之前,会先看一下这个命令指定的文件,这样引入的文件叫头文件。头文件里面放的是一些预先写好的函数和变量。这么说可能有点抽象,打个比方:我们看过元素周期表之后,才知道 Os 是锇元素、Ir 是铱元素;与此相同,编译器看过 #include 引入的文件之后,才知道 printf 是输出函数、scanf 是输入函数,以及你写这些函数的时候它要做什么(函数后面会详细讲,不用在这里纠结)。

2. 注释

  在C语言中有两种注释,下面我举几个例子:

c
//这是一个注释,它只能这样写
//这里是注释部分
这里不是注释部分,因为它前面(指本行)没有双斜杠
//也就是说,这种注释只能写成一行

/* 这是另一种注释,它可以写成多行,
只要注释以斜杠加星号开头,以星号加斜杠结尾即可*/

/*
多行的注释也可以这样写
总之,在C语言中
被 斜杠加星号 和 星号加斜杠夹在中间的
都是注释部分
*/

3. main() 函数

  C程序一定从 main() 函数开始执行,现阶段我们知道这一点就可以了,更多的东西会在后面的函数章节讲到。

4. 声明和初始化

  你可能看到我上面用了 int num; 来创建一个 int 类型的变量(数据类型我们会在下章节详细讲,这里知道它是代表整数就行),变量的名字是 num ,这就叫声明了一个名为 num 的变量。

  声明时,编译器在计算机内存中为变量预留了空间,然后在执行赋值语句时,把值储存在之前预留的位置。给变量赋一个初始值的过程称为初始化。

5. 变量命名规则

  可以用小写字母、大写字母、数字和下划线(_)来命名。另外,名称的首字符必须是字符或下划线,不能是数字。操作系统和C的库经常使用以一个或两个下划线字符开始的标识符(如,_kcab ),所以我们最好不要在自己的程序中使用这种名称。

  另外,变量的名字不要和C语言的关键字重名。比如 int 是C语言的一个关键字,表示一种C语言数据类型,给自己的变量和函数起名字的时候不能命名为 int

6. 提高程序可读性

什么是程序可读性?简单来说,就是你能不能轻松看懂这个程序。可读性高的程序更容易理解,以后也更容易修改和更正。提高程序的可读性也有助于我们理清思路。

如何提高程序可读性呢?方法有很多,我只提供三个最简单的建议供各位参考:

  • 首先是使用 见名知意 的函数名和变量名,比如我这个变量存放的值代表成绩,我就把这个变量命名为 Grades

  • 其次是在程序中加入适当的注释,以帮助我们快速理清思路。

  • 最后,是适当地使用空行,将你的程序分成不同的部分,例如:

c
#include <stdio.h>
int main(void)
{
  
    int kilograms;
    int price;
    int num;
  
    num = 6;
    price = 4;
    kilograms = 7;

    printf("%d",num * kilograms * price);
    return 0;
}

  这段代码使用了两个空行,把声明部分、赋值部分和输出部分分隔开来,我们实际编程中可以按照自己喜欢的方式使用空行,上面这个仅供参考。

页面历史

Released under the CC BY-NC-SA 4.0 License

Copyright © 2024 DevBeginner-Doc