2026/7/10 22:28:04

Ubuntu基本使用与C语言基础

Ubuntu基本使用与C语言基础 1.环境配置VMvare Workstation Pro虚拟化软件--虚拟出计算机需要的硬件Ubuntu18虚拟机--安装一个操作系统Linux2.Linux操作界面图形界面和命令行切换到命令终端ctrlaltt切换到终端后会出现如下所示图片2.1基本使用ctrlshift 终端字体放大ctrlshift - 终端字体缩小ctrlshiftc 终端复制文本ctrlshift v 终端粘贴文本cat /etc/issue 查看操作系统的版本tab键--自动补齐键 可以补齐命令或文件名光标上下键可以执行历史命令。3.Linux常用shell命令linuxubuntu:~$ 此为命令提示符。其分别代表用户名 主机名~ 会发生变化其表示的是一个目录。$ 表示当前用户是普通用户#表示当前用户是系统管理员。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 directory3.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.c2.i键进入插入模式编写C语言代码3.编写代码4.esc键退回底行模式5.底行模式命令wqw保存 q退出 强制执行5.gcc 编译器1.gcc filename.c 编译代码生成 a.outgcc filename.c -o filename 编译代码生成filename2../a.out ./filename 运行代码3.语法错误从第一个提示错误开始修改4.逻辑错误gdb调试代码5.编译流程①预处理处理和#相关的代码#includestdio.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 filename6.C语言基础6.1代码在计算机中的运行1. 可执行程序(a.out)在计算机的外存(ssd, flash)中存储2. 执行./a.out后 计算机会把a.out 中的内容(代码数据) 加载到内存中3. cpu从内存中读出代码数据对数据进行相关操作。6.2数据单位bit 比特位 0/1byte 字节 1 byte 8bit 可以表示一个英文字母kB 千字节 1024 byteMB 兆字节 1024*1024 byte 10^6 byteGB 吉字节 1024*1024*1024 byte 10^9 byteTB 太字节 1024*1024*1024*1024 byte 10^126.3进制转换二进制、八进制、十六进制 转换为 十进制求对应位的权值再求和十进制转换为二进制八进制十六进制十进制转换为二进制对10进制数 一直除2 直到商为0 。并且记录余数逆序组成的序列就是 对应的二进制数十进制转换为八进制对10进制数 一直除8 直到商为0 。并且记录余数逆序组成的序列就是 对应的八进制数十进制转换为十六进制对10进制数 一直除16 直到商为0 。并且记录余数逆序组成的序列就是 对应的十六进制数7.数据类型7.1分类基本类型整型、字符型、浮点型、缺省型、泊尔型构造类型数组类型、结构体类型、共用体类型指针类型空类型7.2整型整数类型分为有符号类型和无符号类型signed、unsigned,默认为有符号 signed类型有符号数在内存中存放数字对应的二进制补码形式无符号数在内存中存放数字对应的二进制形式根据存储空间大小分为短整型short、整形int、长整型long1.整型可以分为有符号 和无符号。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,5352^16 - 1int 4字节32位 -2,147,483,648 ~ 2,147,483,647unsigned int 4字节32位 0 ~ 4,294,967,295long 8字节64位 -9,22亿亿 ~ 9,22亿亿unsigned long 8字节64位 1800亿亿7.3字符型1.字符型变量字符类型用char表示本质上也是一种整数类型char类型标识单个字符能够从键盘中输入的都是字符大小写英文字母、符号、数字字符虚拟机中可使用指令man ascii 查看ASCII码表规定了字符和各进制数字之间的转换关系char 1字节8位 -128 - 127unsigned char 1字节8位 0 - 2552.字符型常量用 扩起来a A 转义字符\n \t \\ \ddd1 - 3位八进制数 \xhh1 - 2位十六进制数3.字符串 常量用 括起来ABC hello a字符串末尾有一个用来标识结尾的\0字符hi\0 占4字节h i \0 \0hi\123bc 占6字节h i \123 b c \0hi\\\x32h 占6字节h i \\ \x32 h \07.4浮点型1.浮点型变量浮点数所有均为有符号类型没有无符号类型浮点数类型分为单精度浮点数类型float、双精度浮点数类型double float类型存储32位 符号位1位 指数位8位尾数位23位double类型存储64位 符号位1位 指数位11位尾数位52位float 4字节32位 -3.4 * 10^38 - 3.4 * 10^38double 4字节32位 -1.7 * 10^308 - 1.7 * 10^3082.浮点型常量十进制小数123.0 0.123指数形式123e3 123E37.5常量和变量常量程序运行过程中值不会发生改变的量可以直接使用变量在程序运行过程中值可以发生改变的量变量名要求 只能由字母、数字、下划线构成不能以数字开头变量名不要与关键字、库函数重名