目录
1.第一个c语言程序
2.c语言程序运行机制流程
运行机制流程介绍
-
编写——编写C语言源程序代码,并以文件的形式存储到磁盘中,源代码文件以“.c”作为扩展名,如本项目中main.c 文件。
-
预处理——在编译之前,预处理器会处理源代码文件,主要进行一些文本上的处理,包括去掉多余的空格和注释,处理预处理指令(后面会学到),生成经过处理的源代码文件,通常带有
.i
扩展名。 - 编译——编译器接受预处理后的源代码文件,并将其翻译成汇编代码,生成汇编文件,通常带有.s或.asm扩展名。
- 汇编——汇编器将汇编代码翻译成机器码并生成一个或多个目标文件,目标文件是二进制文件,通常带有
.o
(在Unix-like系统上)或.obj
(在Windows上) - 链接——链接器将多个目标文件(如果有的话)合并在一起,包括C标准库文件和其他库文件,生成最终的可执行的二进制程序(exe文件)。库文件是由系统提供,里面包括内置的标准函数和数据结构集合等,我们代码中使用的 <stdio.h> 就是标准库提供的,里面定义 printf 这个函数。
- 运行——执行该.exe文件得到程序的运行结果。
运行机制流程演示
通过搭建好的开发环境运行C源文件,所产生的中间文件是不会保存的,只保存最终的可执行二进制程序(.exe文件)。下面,我们使用命令行工具(终端)对 main.c 源文件进行预处理、编译、汇编、链接,这种方式可以保留过程中的中间文件。
- 打开命令行终端。
- 预处理在终端中输入如下命令,输入完命令,按回车键运行。gcc -E main.c -o main.i运行完成后,会生产 main.i 文件,此为经过预处理的源文件。
- 编译在终端中输入如下命令,输入完命令,按回车键运行。gcc -S main.i -o main.s运行完成后,会生产 main.s 文件,此为汇编文件。
- 汇编在终端中输入如下命令,输入完命令,按回车键运行。gcc -c main.s -o main.o运行完成后,会生产 main.o 文件,此为二进制文件。
- 链接在终端中输入如下命令,输入完命令,按回车键运行。gcc main.o -o main.exe运行完成后,会生产 main.exe 文件,此为可执行文件。
- 运行在终端中输入如下命令,输入完命令,按回车键运行。./main.exe会执行 mian.exe 文件,终端中会显示 “Hello World”。
3.c语言输出内容
使用 printf() 输出内容到终端,要输出的内容需要用双引号包裹,如果需要换行可以使用 “\n”。
#include <stdio.h>
int main(){
printf("我是帅哥!\n");
printf("我是帅哥!\n");
printf("我是帅哥!\n");
return 0;
}
输出结果
变量
变量的概念
- 变量是内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化。
- 通过变量名,可以引用这块内存区域,获取里面存储的值。
- 变量的构成包含三个要素:数据类型、变量名、存储的值。
理解变量:就是一个容器,用来存放数据的
变量的声明和使用
- 变量必须先声明,后使用。
- 可以先声明变量再赋值,也可以在声明变量的同时进行赋值。
- 变量的值可以在同一类型范围内不断变化。
代码示例:
#include <stdio.h>
int main(){
// 声明一个int(整型)类型的变量,取名为num1
int num1;
// 为变量num赋值
num1 = 10;
// 声明一个int(整型)类型的变量,取名为num2,并赋值
int num2 = 20;
// 修改变量num2的值,并赋值为num1
num2 = num1;
// 同时声明多个整型变量,并赋值
int a = 1, b = 20, c = 30;
return 0;
}
输出变量
- 格式化字符串是用双引号括起来的一个字符串,里面包括格式占位符和普通字符。
- 格式占位符,也叫格式声明符,由“%”和格式字符组成,作用是将输出的数据转换为指定的格式后输出,这里“%d”表示整数,更多的格式占位符后续会进行讲解。
- 输出列表是程序需要输出的一些数据,可以是常量、变量或表达式,与格式占位符一一对应。
示例代码:
#include <stdio.h>
int main()
{
// 声明一个int类型的变量,并取名为num1
int num1;
// 为变量赋值
num1 = 100;
// 声明一个int类型的变量,取名为num2,并赋值
int num2 = 200;
printf("num1的值为%d \n", num1); // 使用输出语句printf输出num1变量的值,%d表示输出整数形式
printf("num2的值为%d \n", num2); // 使用输出语句printf输出num2变量的值,%d表示输出整数形式
// 修改变量num2的值,把num1变量的值赋值给num2
num2 = num1;
printf("num2的值为%d \n", num2); // 使用输出语句printf输出num2变量的值,%d表示输出整数形式
// 同时声明多个变量,并赋值
int a = 10, b = 20, c = 30;
printf("%d %d %d", a, b, c); // 输出a,b,c三个变量的值
return 0;
}
输出结果