编译型语言: 即 将整个程序 需要预先 编程 成 可执行的二进制指令 才能被计算机执行
运行效率高, 一次编译 可以一直使用
解释型语言: 即 将程序 逐行解释 为 指定的 二进制指令 交由计算机执行
即写程序 和 运行 可以同步进行 节省编译时间
每次程序的运行 都需要同步解释, 运行效率不高
编程语言的组成: C语言
1. 词法符号
关键字: 由编译器预先 定义的有特殊功能的单词短语
运算符: 表示某种运算符符号 + - * /
标识符: 由编程者 自己定义的 名字
分隔符: 用于排版,方便阅读,美观, 但对编译没有任何影响
标点符号:一些有特定位置 特定情况使用的标点符号,参与编译的
严格按照规范使用 ;
2. 结构语法 只能实现在函数中
顺序结构
分支结构
循环结构
C语言编译器:
一个软件, 可以将C源码,编译为 可执行机器码
编译标准:
C98 C99标准
C库: 由编译器自带的一些 有前辈大师编写 一些常用的功能函数
Ubuntu16.04 虚拟机的使用:
图形界面 与 Windows 类似
终端界面 字符界面
终端: 一个链接计算机的 命令窗口
ctrl + alt + t 打开一个新终端窗口
ctrl +shift + t 在同一个窗口中打开新终端
在一个窗口中切换终端
alt + 1 切换到窗口1
alt + 2 切换到窗口2
....
Linux系统: 一个开源 免费的 多任务 多用户的 操作系统
可移植性好 可以裁剪
GNU组织, GPL协议 开源共享协议
Android 是一个Linux的应用程序
桌面右键 新建终端
终端提示符 表示可以输入命令
xxx@xxx-pc:~$
用户名@主机名: ~ 当前工作目录 ~ 家目录 $ 表示普通用户 # 管理员 root
终端清屏命令 clear
快捷键 ctrl + l
ls 命令 查看当前工作目录 中的文件或目录
ls -l 查看目录的详细内容
-rwxrwxr-x 1 xxx xxx 8704 7月 11 09:17 a.out
文件类型 - 普通文件
d 目录
rwxrwxr-x 文件权限 分3个部分 rwx对所有者 rwx对所属组 对其他人r-x
rw-r--r-- == 110 100 100 == 0644 文件权限码
xxx 第一个xxx 文件的所有者
8704 文件的大小 单位字节
7月 11 09:17 最后一次修改文件的时间
cd 命令 进入目录
cd 目录名 进入该目录
cd .. 返回上一级目录
删除文件和目录
rm 文件或目录名 -rf
递归删除文件或目录中的所有内容
创建目录
mkdir 目录名
mkdir c基础
删除目录
rmdir 空目录名
创建一个普通文件
touch 普通文件名
编辑文本文件
1. 使用图形界面编辑
gedit 文件名
使用图形界面记事本编写C代码
2. vim 字符界面 文本编辑器 来编写C代码
vim 文件名 打开文本文件 若该文件不存在 将会自动创建
vim 命令模式: 默认进入vim 就是命令模式
该模式下 键盘输入的都认为是命令
dd 剪切一行 光标所在行
5dd 剪切5行 光标所在行以及后边4行
p 粘贴 在光标下一行 粘贴
yy 复制光标所在行
5yy 复制光标所在行以及后边4行
x 删除光标所在字符
u 撤回上一次操作
进入 插入模式
命令模式下 输入 i o a
i 进入插入模式 从光标位置前开始插入
o 进入插入模式 从光标下新建一行并从该行开头插入
a 进入插入模式 从光标位置后开始插入
退出插入模式 到 命令模式
esc
进入底行模式 该模式下 主要是操作文件 保存 退出 等
:wq 保存退出
:q! 强制退出 不保存
:w 仅保存
:wqa 保存并退出所有文件
多文件编辑 vim 1.c hello.c -o -o水平切分窗口 -O 垂直切分窗口
第一个C代码:
vim hello.c
#include <stdio.h>
int main()
{
printf("hello world\n");
return 0;
}
编译C源码文件
gcc hello.c
默认生成一个 a.out文件 就是该工程的可执行文件
运行可执行文件
./a.out
C语言对标点符号 要求严格 区分大小写中英文符号等
gcc 编译时 重新命名 输出 可执行文件的名字
gcc hello.c -o hello
Linux重命名文件
mv 命令 可以移动或重命名文件
mv hello.c 2.c
修改hello.c 为 2.c
C语言关键字:32个
1.类型相关的
基本数据类型: char double float int long short signed unsighed void
构造数据类型: struct union enum
2.存储相关
auto const extern register static
3.结构相关
break case continue default do while if else
for goto return switch
4.特殊功能
sizeof typedef volatile
计算机中 数据的表示
数值数据(基本数据类型) 10 3.5 -5 即一个数
非数值型数据 自然语言 "hello world" "你好" "123" "13727045125"
ASCII 英文字符 及 符号 和 控制命令 的 编码
C语言中 使用"" 引用其他的数据 称字符串
图片 语音 ....
数据存储与表示:
计算机只能处理与存储 0和1类型数据 最小单位 bit 0-1 内存最小单位是字节 1Byte=8bit
数值数据 二进制 与 十进制
进制的表示: 0b 二进制 默认10进制 8进制 0o 16进制 0x
123 十进制数 逢十进一
数码 0 1 2 3 4 5 6 7 8 9
1 * 10 ^ 2 + 2 * 10 ^ 1 + 3 * 10 ^ 0 = 123
0b1011 二进制 逢二进一
数码 0 1
0b1011 = 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 *2^0
= 11 十进制
0
1
10
11
100
...
10进制转 2进制 算法
123 余数 == 0b111 1011 == 0x7b
/2 61 --- 1 二进制低位
/2 30 --- 1
/2 15 --- 0
/2 7 --- 1
/2 3 --- 1
/2 1 --- 1
/2 0 --- 1 二进制高位
16进制 逢16进一 半斤八两
数码 0-9 A(10) B(11) C(12) D(13) E(14) F(15)
123 0x7b
/16 7 ---- 11
/16 0 ---- 7
进制 方便人 阅读 编写 程序
8进制
面试题: 有100瓶药水 有一瓶毒药 药效发作时间需要1小时
现有 8只 小白鼠 如何操作 可以在 最短的时间内找到这瓶毒药
假设 除毒药发作时间外 都不需要时间
C语言中,对数 设计类型:
数据类型: 即 对 不同类型的数 的 表示 和 存储
整数类型 精确类型
char 字符型 8bit 1字节 存储这个数 0-255 共256个数
short 半字类型 16bit 2字节 0-2^16-1 = 65535
int 整型 32bit 4字节 0-2^32-1 = 4,294,967,295
long 长整型 64bit 8字节 0-2^64-1 =
int 与 long 存储大小
一些8位单片机 51 int 2字节 long 4字节
一些32位单片机 stm32 或 LinuxC int 4字节 long 8字节
signed 有符号类型 不写默认是有符号类型
unsigned 无符号类型
signed char 有符号字符型 -128 ~ + 127
unsighed char 无符号字符型
有符号与无符号的区别
负数如何表示 -2 -10 -1
有符号数 最高bit 作为符号位 0 正数 1 负数
signed char -128 ~ 0 ~ +127
补码形式 存储有符号类型
LinuxC中:
不写 signed 默认 都是有符号 gcc
单片机C中 arm gcc
char 不写 默认无符号类型
除char类型 外 其他不写signed 默认是有符号类型
最高位 为 符号位 其余位 存储值 若值是负数 补码
负数值 = 补码取反 +1
强类型语言:
C语言: 任何变量或存储空间 必要先定义(给定类型 ) 然后才能使用
且 使用过程中 类型不不能更改