C语言程序设计现代方法学习笔记(一)

前言:如封面所见,本专栏仅作为我的C语言学习笔记,如有理解不对的地方还请见谅。对自己的要求是:多实践,少琢磨,牢记定义,活学活用。

前期准备工作

1、找到人民邮电出版社出版的这本《C语言程序设计现代方法》教科书

2、下载一个可以编写C语言代码的集成开发软件,我这里使用的是vsCode。


为什么没有一?,教材第一张讲的C语言的历史和特点,该部分不做记录,但为了保持一致,本笔记的所有题目序号都按照教材章节序号标注,没有笔记的章节可能会直接跳过,此后不做赘述。

浅提一下C语言的优点:高效、灵活、跨平台可移植性强、功能强大、有标准库。

缺点:容易隐藏bug、维护和修改成本高、代码难以理解。

二、C语言基本概念

2.1 入门代码

HELLO WORLD!(误)

创建一个文件命名为:C_test_0.c

 在vscode中编译该段代码,会在终端处打印出“To C, or not to C: hat is the question.”

2.1.1 编译和链接

以上代码虽然十分简短,但其实际执行过程其实十分复杂。

首先我们创建C_test_0.c文件,该文件需要经过一些步骤变为机器语言,即计算机可执行的文件。

在C语言中,一般包含以下三个步骤:

  • 预处理:我们创建的C_test_0.c文件首先会交给预处理器。预处理器执行以#开头的语句(指令),来为程序添加额外的内容(#include),或对程序中的代码进行修改(#define, #typedef等)
  • 编译:修改后的程序会进入编译器。编译器将程序翻译成机器指令(即目标代码)。但此时该程序仍然是不可运行的。
  • 链接:最后目标代码会进入连接器。链接器把目标代码和所需的其他附加代码整合在一起,并生成最终的可执行程序。

2.1.2 集成开发环境

本人用的vscode便是一款集成开发环境,它将C语言编程所需的:编写、编译、链接、执行与其他调试程序集合在了一起。

本在vscode中对上述代码进行编译,其实就是完成了对C语言代码的预处理、编译和链接。之后我们可以在对应工作目录下找到与程序文件名相同的可执行文件:C_test_0.exe

我们将该可执行文件在终端执行即可得到我们想要实现的结果:

 2.2 简单程序一般形式

下面这段代码即为C语言程序的一般模板:

指令

int main(void)
{
    语句
}

其中包含了C语言的三个关键语言特性:指令函数语句

2.2.1 指令

在编译C语言前,预处理会对程序进行编辑。预处理执行的命令称为指令,最常见的就是#include

所有的指令都是以#开始的,以此区分指令与其他代码,指令结尾没有分号或者其他特殊符号,每条指令都必须独占一行,而且只占用一行。

回顾2.1中的代码,指令:#include <stdio.h>向C_test_0.c文件引入了有关C标准输入/输出库的信息,<stdio.h>作为标准库提供了我们需要用到的printf函数语句。这也说明C语言没有自带的读/写命令,只能通过外部库函数添加的形式实现。

2.2.2 函数

 C语言程序就是函数的集合,而函数就是由大括号{}括起来的语句的组合。

函数分为两大类:一类是我们自己编写的函数,另一类是我们在预处理时包含的库函数。

函数的定义和编写之后还会讲到,再次之前,我们只需要知道main函数时C语言中不可缺少的一个函数,所有的C语言程序都是从main函数开始执行的。

注意main函数的名字一定不能写错,大小写也不能有误。

2.2.3 语句

语句是程序运行时执行的命令。在C_test_0.c程序中只用到了两种语句,一是返回语句return,二是函数调用语句printf()。

每条语句都需要在结尾加分号;(分号代表语句的结束,为了向编译器指出语句结束的位置)

一条语句可以占用多行,也可以多条语句占用一行。

2.4 变量和赋值

在程序执行的过程中需要一种临时存储数据的方法,C语言中以变量作为数据的存储单元。

每个变量都必须有一个类型,这个类型说明了所存储的数据的的种类,它决定了变量的存储方式以及允许对变量进行的操作。

使用变量前必须要对变量进行声明,声明是为了告知编译器某个变量的具体存储方式,声明格式为:变量类型+变量名。

一般在将包含小数点的常量赋值给float类型变量时,常在后面加上一个f,来提示编译器。

scanf和printf函数,之所以在函数名末尾上加上f,是为了表明该函数都需要通过"格式串"来指定输入输出的数据类型。

其简单格式如下:

int x;
//输入一个整型数据到变量x中
scanf("%d", &x);
//要打印一个整型数据,要打印的数据存在变量x中
printf("%d", x);

C语言中有个不成文的编程规范,宏定义#define的名称一般都用大写字母表示;所有标识符(即为变量、函数、宏或其他实体进行的命名)常常只用小写和用下划线作连字符,当然标识符还有一种常用的命名格式,即不使用下划线,将名称中每个单词的首字母大写。

2.X 问与答

  1. GCC最初是GNU C Compiler的简称,现在泛指GNU Compiler Collection,因为现在的GCC能够编译用Ada、C、C++、Fortran、Java和Objective-C等多种语言编写的程序。GCC不仅是完全免费的,能编译多种语言的编译器,而且还可以在多种基于UNIX的操作系统(Linux、Mac OS X和BSD等)下使用。
  2. GNU是指GNU's Not UNIX,它是自由软件基金会(Free SoftWare Foundation)的一个项目。GNU项目重写了许多传统的UNIX软件,并免费提供给公众使用。GNU具体项目信息可登录www.gnu.org网站查看。
  3. GCC和其他GNU软件对于Linux操作系统来说至关重要。Linux操作系统本身只有“内核”(处理程序调度和基本输入/输出服务),为了获取具体完整功能的操作系统,GNU软件是必不可少的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值