1.环境配置

VMvare Workstation Pro(虚拟化软件)--虚拟出计算机需要的硬件

Ubuntu18(虚拟机)--安装一个操作系统(Linux)

2.Linux操作界面

图形界面和命令行,切换到命令终端(ctrl+alt+t)
切换到终端后会出现如下所示图片

2.1基本使用

ctrl+shift+ + 终端字体放大;ctrl+shift+ - 终端字体缩小;ctrl+shift+c 终端复制文本;ctrl+shift +v 终端粘贴文本;cat /etc/issue 查看操作系统的版本;tab键--自动补齐键 ,可以补齐命令或文件名
光标上下键,可以执行历史命令。

3.Linux常用shell命令

linux@ubuntu:~$ 此为命令提示符。其分别代表用户名  @  主机名,~ 会发生变化,其表示的是一个目录。$ 表示当前用户是普通用户,#表示当前用户是系统管理员。

https://www.runoob.com/linux/linux-command-manual.html此处推荐一个网站,此网站含有较为全面的shell命令)

3.1ls命令查看当前目录(文件夹) 下的文件名

ls -a 查看当前目录(文件夹) 下的所有文件 ,包含隐藏文件(通常是.开头的文件,或目录)。

ls -l 查看当前目录(文件夹) 下的文件 详细信息 ls -l == ll(别名,写法)。

3.2man命令的帮助 manual 手册

man 命令名,主要用于查看命令的帮助。
man ls 查看ls命令的帮助,查看命令有那些选项。

3.3创建目录与删除

3.3.1创建目录

创建目录使用的命令为:mkdir 如下图所示即为创建一个目录名为20260422的目录。

此时运用ls命令即可查看创建成功的目录

3.3.2删除目录  

删除目录使用的命令为:rmdir 此时需注意目录必须为空才可删除成功。

3.4cd命令目录切换

进入目录:cd后直接跟进入的目录名,此时也可用tab健补齐目录名。

例如:cd 20260422即可进入目录20260422

返回上一层目录:cd .. //.. 代表上一层目录

cd / 进入根目录, 最高路径

3.5touch命令创建一个空白文件

创建文件:touch后直接跟文件名,创建一个空白文件,如果文件存在,则会更新时间戳。

3.6rm命令删除文件

删除文件:rm后直接跟要删除的文件名。例如rm 123表示的就是删除123这个文件。


此外,rm -fr表示删除目录,其中-f 直接删除,不询问y/n,-r 删除目录。

3.7pwd命令显示当前路径

pwd                --打印当前所在的绝对路径                -printf where directory

3.8cp命令文件的复制

复制上层目录的main.c文件到本层并命名为main.c 。 需要注意的是,上层文件main.c 必须存在。


复制单个文件
cp 源文件(必须存在) 目标文件(如果不存在,创建,如果存在,覆盖)

3.9mv命令移动文件或剪切文件

把指定文件或目录,移动到指定目录下。如下图所示即为把20260422目录下的1.c文件移动至20260423目录下。

3.10cat命令查看文件的内容

cat 1.txt即为查看1.txt文件的内容。需注意的是只能查看文本文件。

4.vim的使用

1.vim filename.c

2.i键进入插入模式编写C语言代码

3.编写代码

4.esc键退回底行模式

5.底行模式命令:wq!

w:保存                q:退出                !:强制执行

5.gcc 编译器

1.gcc filename.c 编译代码生成 a.out

   gcc filename.c -o filename 编译代码生成filename

2../a.out        ./filename        运行代码

3.语法错误

从第一个提示错误开始修改

4.逻辑错误

gdb调试代码

5.编译流程

①预处理:处理和#相关的代码 

#include<stdio.h>                展开头文件中的代码

#define  MODE  0                将宏替换

#if        #elif        #else        #endif                条件编译

gcc -E filename.c -o filename.i

②编译:将C语言代码编译成汇编代码

gcc -S filename.c -o filename.s

③汇编:将汇编代码编译成二进制代码,不可执行

gcc -c filename.c -o filename.o

④链接:把需要使用的外部库函数(别人提供的功能函数),与a.out 内部发生关联关系。
当a.out 运行起来后,直到在系统的那个位置,找到对应函数的实现。

gcc filename.c -o filename

6.C语言基础

6.1代码在计算机中的运行

1. 可执行程序(a.out)在计算机的外存(ssd, flash)中存储
2. 执行./a.out后 计算机会把a.out 中的内容(代码+数据) 加载到内存中
3. cpu从内存中读出代码+数据,对数据进行相关操作。

6.2数据单位

bit                比特位              0/1
byte               字节             1 byte = 8bit 可以表示一个英文字母
kB                千字节           1024 byte
MB               兆字节           1024*1024 byte 10^6 byte
GB               吉字节           1024*1024*1024 byte 10^9 byte
TB               太字节            1024*1024*1024*1024 byte 10^12

6.3进制转换

二进制、八进制、十六进制 转换为 十进制:

求对应位的权值再求和

十进制转换为二进制,八进制,十六进制

十进制转换为二进制
对10进制数 一直除2 ,直到商为0 。并且记录余数,逆序组成的序列就是 对应的二进制数
十进制转换为八进制
对10进制数 一直除8 ,直到商为0 。并且记录余数,逆序组成的序列就是 对应的八进制数
十进制转换为十六进制
对10进制数 一直除16 ,直到商为0 。并且记录余数,逆序组成的序列就是 对应的十六进制数

7.数据类型

7.1分类

基本类型:整型、字符型、浮点型、缺省型、泊尔型

构造类型:数组类型、结构体类型、共用体类型

指针类型

空类型

7.2整型

整数类型分为有符号类型和无符号类型(signed、unsigned),默认为有符号 (signed)类型

有符号数在内存中存放数字对应的二进制补码形式,无符号数在内存中存放数字对应的二进制形式

根据存储空间大小分为短整型short、整形int、长整型long

1.整型可以分为有符号 和无符号。
2. 整数数据在内存都是以补码形式存储的。如果是正整数的话,补码就是原码本身。如果是负数的话需要计算补码,先获得原码(先绝对值,转二进制) ,再对原码取反操作(原码中的0变1,1变0) 获得反码,最后对反码 +1 操作 。

3. sizeof 是一个关键字 , sizeof(a) , sizeof(10),sizeof(int) .获得对应类型的数据在,内存中占用的
空间是多少个字节。

short                                     2字节(16位)                   -32768 - 32767((-2^15) - (2^15 - 1))     

unsigned short                     2字节(16位)                    0 ~ 65,535(2^16 - 1)

int                                         4字节(32位)                -2,147,483,648 ~ 2,147,483,647

unsigned int                         4字节(32位)                0 ~ 4,294,967,295

long                                      8字节(64位)                 -9,22亿亿 ~ 9,22亿亿

unsigned long                      8字节(64位)               1800亿亿

7.3字符型

1.字符型变量

字符类型用char表示,本质上也是一种整数类型

char类型标识单个字符,能够从键盘中输入的都是字符(大小写英文字母、符号、数字字符)

虚拟机中可使用指令man ascii 查看ASCII码表,规定了字符和各进制数字之间的转换关系

char                                   1字节(8位)                        -128 - 127

unsigned char                    1字节(8位)                        0 - 255

2.字符型常量

用' '扩起来:'a' , 'A' , '!'

转义字符:'\n' , '\t' , '\\' , '\ddd'(1 - 3位八进制数) , '\xhh'(1 - 2位十六进制数)

3.字符串 常量

用" "括起来:"ABC" , "hello" , "a"

字符串末尾有一个用来标识结尾的\0字符

"hi\0"                         占4字节:h  i  \0  \0

"hi\123bc"                 占6字节:h  i  \123  b  c  \0

"hi\\\x32h"                 占6字节:h  i  \\  \x32  h  \0

7.4浮点型

1.浮点型变量

浮点数所有均为有符号类型,没有无符号类型

浮点数类型分为单精度浮点数类型(float)、双精度浮点数类型(double )

float类型存储(32位) == 符号位(1位)+ 指数位(8位)+尾数位(23位)

double类型存储(64位) == 符号位(1位)+ 指数位(11位)+尾数位(52位) 

float                                  4字节(32位)                        -3.4 * 10^38 - 3.4 * 10^38

double                              4字节(32位)                         -1.7 * 10^308 - 1.7 * 10^308

2.浮点型常量

十进制小数:123.0 , 0.123

指数形式:123e3 , 123E3

7.5常量和变量

常量:程序运行过程中值不会发生改变的量,可以直接使用

变量:在程序运行过程中值可以发生改变的量

变量名要求: 只能由字母、数字、下划线构成,不能以数字开头,变量名不要与关键字、库函数重名

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐