CS61c课程学习心得:C语言在计算机体系结构中的重要性解析
CS61c系列课程学习

本系列博客的分享是以《CS61c》这门课程为基础进行的,主要记录的是我在学习过程中的心得以及所获得的收获。
引言
工欲善其事,必先利其器。——《论语·卫灵公》
我要学习计算机体系结构,那为何要学习 C 语言呢?讲体系结构的课程为何一开始先讲解 C 语言呢?因为 C 语言具备指针的用法,能够直接对内存进行操作。而计算机体系结构有一个极为重要的概念,那就是内存,要在内存中存储数据以及将数据加载到内存中。也就是说,C 语言处于比较底层的位置,在高级语言当中,可以借助 C 语言来探寻体系结构的奥秘。
正文 一、C语言的编译
C语言的编译,是与计算机所选用的体系结构有关的。
就像由 x86 进行编译的 C 程序,无法在 RISC-V 的架构体系上得以运行。
C语言的编译过程:
C编译的优势
运行时性能非常出色。 它在运行时能高效地处理各种任务,表现出卓越的性能。 其运行时的效率很高,能够快速响应各种操作。 运行时的性能优势明显,能快速完成各项任务。 它在运行过程中展现出了极佳的性能表现。 运行时的性能很好,能够迅速处理各种事务。 该系统在运行时的性能十分突出,能快速响应并处理各种需求。 运行时的性能很棒,能够高效地完成各种工作。 它的运行时性能良好,能够快速地应对各种情况。 运行时的性能表现优异,能迅速地完成任务。 该软件在运行时的性能相当出色,能快速处理各种操作。 运行时的性能优良,能够高效地完成各项任务。 它在运行时的性能表现很好,能够快速地响应各种需求。 运行时的性能很突出,能够迅速地处理各种事务。 该程序在运行时的性能非常好,能快速地完成各项工作。 运行时的性能表现极佳,能迅速地应对各种情况。 它的运行时性能很优秀,能够高效地处理各种操作。 运行时的性能良好,能够快速地完成各项任务,表现十分出色。
用英文能够很好地表达编译的基本概念。接下来让我用最经典的三段论来进行总结。
C语言编译的缺点:
二、C语言的预处理
1、预处理的时机
预处理(C Pre-Processor, CPP)是在 C 语言进行编译之前进行的操作。如图所示:
2、预处理对源代码做什么
3、预处理的用法
预处理的命令以#开头,最常用的如下:
#include "file.h" // 头文件
#include // 头文件
#define PI (3.14159) // 宏
#if / #endif // 条件编译预处理
4、如何看预处理生成什么内容
在编译的时候, 在gcc命令后加上-save-temps。
实例分析:
创建一个main.c文件,代码如下:
#include
#define PI (3.14159)
int main(){
printf("PI = %f\n",PI);
return 0;
}
执行命令,使用 gcc 编译器,将输出文件命名为 main,同时保存中间文件,源文件为 main.c
o main 是一个整体,它的作用是产生最终的执行文件,该执行文件的名字为“main”。
save-temps 的意思是,在编译过程中会产生一些临时文件,而这里产生了 main、main.c、main.i、main.o、main.s 这五个文件。
其中,main.i 是经过预处理后所生成的文件,你可以对其进行简单的查看。
对于宏的应用,在这里多说一点。
三、C语言的简单语法
1、main 函数
在 C 语言中,主要的函数入口是 int main ,它带有两个参数,一个是 int argc ,另一个是 char *argv[] 。
argc与argv的理解
2、int
遇到想使用 int 的情况时,可以考虑使用 intN_t 或者 intN_t 。
(N是一个整数,例如32,即int32_t)。
3、 const
在声明时,常量被赋予一个有类型的值;在整个程序的执行过程中,其值不能改变。
定义了一个整型常量 days_in_week,其值为 7。
4、enum
定义了一个枚举类型 color,其中包含了 RED、GREEN 和 BLUE 这三个枚举值。
5、typedef
typedef uint8_t BYTE;
BYTE b1,b2;
6、struct
Structs 是变量的结构化组合。
typedef struct {
int length_in_seconds;
int year_recorded;
} SONG;
SONG song1;
song1.length_in_seconds = 213;
song1.year_recorded = 1994;
7、do-while 语法
首先执行一次 statement 语句,然后判断 expression 是否为真,如果为真则继续执行 statement 语句,再次判断 expression,如此循环,直到 expression 为假时结束循环。
总结
本文依据 CS61C 的课程内容,凭借自身的理解,对 C 语言的编译部分、预处理部分以及简单语法部分的内容进行了简要总结。因为刚刚开始学习,所以很可能存在理解有偏差的地方,期望大家能够提出批评和指正。