1.1基础数据类型
int,float ,char ,double ,long 等等
1.2数据存储格式以及显示
数据存储格式是二进制。
正数的原码=反码 =补码。
负数的补码是将原码的最高位保持不变(最高位是符号位,正数为0,负数为1),其余位取反。
负数的补码是负数的反码+1。
显示转换有二进制,八进制,十进制,十六进制。
二进制数又称8421码,二进制数转换为八进制:从右到左,每3个连续二进制转换为1个八进制,高位不足补0。
十六进制数为0-9,a-f,总共16个,二进制数转换为十六进制数:从右到左,每4个连续二进制转换为1个十六进制,高位不足补0。
进制数相互之间可以互相转换。
1.3变量,关键字,标识符
(1)变量概念:
本质是一个可以存放数据的容器
(2)变量存储:
数据的存储类型有五类:
auto :自动 可以省略,由编译器决定存储位置
static: 静态区 修饰变量时表示指定该变量空间在静态区
register: 寄存器存储类型 表示该变量应放到cpu的寄存器中
extern: 引用存储类型 多文件编辑中表示不需要给该变量分配存储空间,已经在其它文件中被定义了 ,该文件只是引用该变量只读。
const: 常量类型 指定变量的存储空间,位于常量区,仅修饰全局变量。若修饰局部变量,其存储空间位置不会改变,仅表示该变量
(3)变量定义使用
格式: 存储类型 数据类型 变量名
变量初始化:在定义变量时就给予赋值,对于静态区变量,若没有初始化,会自动赋值为0,对于堆区和栈区,若没有初始化,其变量内容是"随机"的 。
(4)关键字
由编译器定义的,由特殊含义的词汇,不能用作他用
(5)标识符
由编译者自定义的 名字 变量名 函数名 命名,只能由数字,字母,下划线组成
1.4运算符
常用运算符:+ ,- ,* ,/ ,% ,< ,> ,== ,& ,| 等等
1.4.1类型转换
隐式类型转换:由编译器自动完成类型的转换
其转换规则是:将精度低的向精度高的转换,将范围小的往范围大的转换,有符号数向无符号数转换
强制类型转换:(目标类型)原类型变量
手动的将一个类型转换为另一个类型,当转换的精度不匹配的时候,会存在数据,精度 丢失的问题。
1.5运算符优先级
2.1Linux简介和特点
Linux特征:linux的用户空间和内核空间互不进入
Linux和Windows的区别:linux文件命名严格区分大小写,Windows不需要区分大小写
2.2Linux环境搭建和使用
软件包管理器
dpkg本地软件包管理器和apt联网软件包管理器
在现阶段的学习中在linux系统里面一般使用的shell命令去练习c语言,所以用到的shell命令一般有:cp,mv,touch,mkdir,gcc,rm,ls,等等。
2.3 gcc编译器和编译过程
gcc编译器流程分为四个步骤:
1.预处理
(不检查语法错误等) 宏操作(宏定义错误会检查出来)
2.编译
检查语法,将C代码转换为汇编代码
3.汇编
将汇编代码转换为二进制机器语言
4.链接
将多个二进制机器码文件链接到一起,构成一个可执行文件,将程序所用到的库链接到文件中
gcc编译器的组件:
1.编译器
2.汇编器
3.链接器
4.C库
2.4 vim工具简单使用
现阶段我主要使用它来写C代码,格式为 vim 文件名.c
3.1输入和输出
1.C语言的终端输入:
getchar(); 从终端读取一个输入字符
fgets(); 从终端输入一个字符串
gets(); 有溢出风险 已经弃用
2.字符输出:
putchar(); 输出一个字符到终端
putc(); 输出一个字符到终端
puts(); fputs(); 输出字符串
printf();字符串的格式化输出
3.2分支语句
1.二分支结构:if else 结构
if( 条件表达式 ){ 代码块1;; } else{代码块2;;}
if( 条件表达式 )
{
代码块1;;
}
else
{
代码块2;;
}
2.多分支结构: switch case 结构
switch( 整型表达式 )
{
case 常量1: 语句块1;;
case 常量2: 语句块2;;
case 常量3: 语句块3;;
.....
default: 语句块n;;
}
3.3条件组合和分支嵌套
if( 条件表达式1 )
{
代码块1;;
if(条件表达式2){ 代码块3 ;; } else {代码块4 ;;}
代码块5;;
}
else
{
代码块6;;
if(条件表达式3){ 代码块7 ;; } else {代码块8 ;;}
代码块9;;
}
3.4循环控制语句
1.for循环:
for( 表达式1 ; 表达式2 ; 表达式3 )
{
循环体;;
}
2.do while循环:
do{ 循环语句块;; } while( 条件表达式 );
3.while循环:
while( 条件表达式 ) {循环语句块;;}
3.5一维数组、一维字符数组、字符串
数组: 是一种构造的数据类型将多个相同类型的数据在内存中有序连续存放,这种结构称作数组结构。
元素: 数组中的单个数据称作数组的元素。
数组的定义: 存储类型 数据类型 数组名 [ 元素个数 ];
存储类型: 决定数组在内存中的区域。
数据类型: 决定数组元素的类型 。
数组名: 一个标志符 自定义。
[] :是标点符号不能缺少表示这是一个数组 。
元素个数:指定数组元素的个数目的是指定占用的内存。
数组名: (1) 代表这个数组 arr[0]
(2) 代表这个数组的首地址 arr
首地址: 变量在内存中 所占用的内存的 开始地址 地址小的那端
3.6二维数组、二维字符串数组
二维数组: 即数组的元素是一个数组,称作二维数组,数组元素不是数组的称作一维数组。
二维数组的定义:存储类型一维元素的元素的数据类型 二维数组名[一维元素个数][ 一维元素的元素个数 ];
4.1函数
函数:将某些完成特定功能的代码的有序集合;
函数的定义:
返回值类型 函数名 (形参列表)
{
函数体;; // 代码块
return ;
}
返回值: 一个函数即一个特定的功能 对于该功能 可能需要输出或返回执行的结果给调用者。
返回值类型: 即指定函数返回值的类型。
函数名: 标志符自定义不能与同文件的其他函数重名。
形参列表: 代码块完成该功能 可能需要外部给定一些参数 。
函数调用: 执行代码块 。
函数名(实参列表)。
形参与实参:实参是调用者 传递给函数 的 形参的值 , 是实参值的拷贝,函数操作形参 是不会影响实参的。
地址传参: 即 形参传递的内容是 实参的地址, 此种情况下 可以通过这个地址(形参) 操作实参 。
函数声明: 在函数被调用前, 将除函数体外的部分放在调用前的函数外。
函数原型: 除函数体,剩下的部分即函数原型。