学习C语言第一天
程序员文章站
2022-06-06 17:07:21
...
机器生汇编、汇编生B、B生C、C生万物。
计算机硬件系统
主机组成
-
CPU
- 控制器、运算器、寄存器、预取器、MMU
-
内存储器
-
ROM read only memory 只读
-
RAM random access memory 随机读写
内存储器靠“电信号”来存储用户的数据
- 缺点:数据断电没,不能持久存储
- 优点:数据读写速度快
-
外设部分
- 输入设备:读入数据。如鼠标、键盘、摄像头、麦克风等
- 输出设备:写入数据。如扬声器、屏幕、打印机等
- 外存储器:
- 硬盘:靠“磁信号”存储数据。断电数据依然存在,数据的读写速度慢。(靠硬盘旋转、振臂伸缩、磁头等机械操作)
- 固态硬盘:使用固态电子存储芯片阵列制成的硬盘,采用集成电路存储。 (但依然没有内存快)
CPU-内存-硬盘之间的关系
- 内存:是CPU和硬盘数据沟通的桥梁。只保存程序运行所需的临时数据
- 硬盘:用于保存程序运行中所需要持久化保存的数据。
- CPU:负责程序运行过程中所要完成的运算。
计算机软件系统
操作系统:是管理计算机硬件与软件资源的计算机程序。——本质:程序!
-
向下:
提供驱动程序,驱使硬件工作。——管理硬件。 -
向上:
- 给用户提供访问途径,访问硬件。
- 图形界面:普通用户、程序员借助鼠标实现。
- 终端界面:主要开人员。普通用户较少使用。系统调用:开发人员专用。
- 系统调用:开发人员专用。
编译器和语言
- 编程语言:
- 由特殊字符、字母组成。控制计算机硬件。
- 编译器:
- 将人类可读易懂的计算机语言,转换为 CPU 能识别的机器语言(二进制101010101)。
- 不同语言,语法不同,有不同的编译器。
C语言标准
C89 C90 C99 C11
-
可将C语言的标准理解为C语言说明书,但并没有强制约束力。
-
常见C/C++编译器
- Borland C++ 宝蓝公司
- Intel C++ 英特尔编译器
- VC++ 微软公司
- g++编译器 (gcc是编译套件),Linux默认使用的编译器,对标准支持最好。
C语言关键字
HelloWorld
// #: 特殊字符,用来指定关键字。 后接 include 表示引入/包含文件。
// include : 包含,用来指定 头文件名
// <>: 表示使用C语言标准库头文件。
// stdio.h :头文件名。std : standard的缩写 标准。 i:input。 o:output
// 此行,服务于 printf函数。———— 用来说明printf。
#include <stdio.h>
/*
int: 程序执行结束,返回整数。此 int 制约了 return 后的数据类型。
main:C语言入口函数。main函数开始,C程序开始,main函数结束,C程序结束。
一个c项目中,只能有一个main函数。
(): main函数的参数。
void:参数为空。 ———— 无参!!!
{ }: 包裹 main 函数的函数体。
*/
int main(void)
{ // 程序开始了。
printf("hello C语言!\n"); // 打印数据到屏幕。
/*
printf函数,C标准库函数,作用:用来向屏幕打印数据。
"hello C语言!\n" : 打印字符串数据到屏幕上。
\n : 表示换行。
*/
return 0; // 受 int 影响。
} // 程序结束了。
注释
- 单行注释:
- 使用 // 注释内容。
- 多行注释:
- /* 注释内容 */
- 多行注释之间不能相互嵌套。 多行、单行之间可以相互嵌套。
- 条件编译实现注释:
- #if 0 注释内容 #endif
gcc编译四步骤
-
预处理:
- 展开头文件。 —— 不检查语法错误。可以展开任意文件。
- 替换注释。—— 替换为空行或空格。 得到 .i 预处理文件。
-
编译:
- 逐行检查语法、词法错误。 —— 是 gcc 编译4步骤中,耗时最长的阶段。
- 如果无错误,将C程序翻译成 汇编指令。得到 .s 汇编文件。
-
汇编:
- 翻译:将汇编指令翻译成对应的 二进制编码(机器语言)。得到 .o 目标文件。
-
链接:
- 合并启动例程。(启动main函数)
-
引入 头文件对应的库文件。 —— 得到可执行文件。
预处理:gcc -E hello.c -o hello.i
编 译:gcc -S hello.i -o hello.s
汇 编:gcc -c hello.s -o hello.o
链 接:gcc hello.o -o hello.exe
标准main函数种类
C语言中,标准的main函数书写形式只有两种:有参main、无参main
-
无参main函数
int main(void) { return 0; }
-
有参main函数
int main(int argc, char *argv[]) { return 0; }
System函数
- 作用:将系统命令使用 system 函数,在程序中,执行起来。
#include <stdio.h> // 服务于 printf函数。 说明 printf 函数。
#include <stdlib.h> // 服务于 system函数。 说明 system 函数。
#include <Windows.h> // 服务于 Sleep函数。 说明 Sleep 函数。
int main(void)
{
printf("----------测试1\n");
printf("----------测试2\n");
printf("----------测试2\n");
printf("----------测试2\n");
printf("----------测试2\n");
// system("pause"); // 执行暂停命令
// system("calc"); // 使用命令启动计算器。
// system("mspaint"); // 使用命令启动画图工具。
Sleep(2000); // S 大写。参数为 毫秒。 2000 -- 2秒
system("cls"); // 清屏命令
return 0;
}
编程练习
-
在 VS 中编写 .c 程序。向屏幕输出: "C语言编程之本,月薪过万不是梦!"
#include <stdio.h> int main(void) { printf("C语言程序之本,月入过万不是梦!"); return 0; }
-
在 VS 中编写 .c 程序。程序启动后,可以将 windows 的系统的计算器启动。
#include <stdlib.h> int main(void) { system("calc"); return 0; }
-
在 VS 中编写 .c 程序。实现如下功能:
-
先打印输出:“你好!我是C语言”,要求打印完能换行。
-
程序睡眠 5 秒后, 打开一个空记事本。【提示】:使用命令:notepad 可以启动记事本。
#include <stdio.h> #include <stdlib.h> #include <Windows.h> int main(void) { printf("你好!我是C语言\n"); Sleep(5000); system("notepad"); return 0; }
-