C语言笔记

7.26笔记

Linux命令:

打开终端:ctrl+alt+T(当前路径)

     ctrl+shift+n(家目录)

~:家目录

关闭终端:ctrl+d

     exit

    直接关闭

查看用户名:whoami

查看主机名:hostname

查看当前路径:pwd

查看当前路径下有哪些文件:ls  -a 所有文件(包括隐藏文件)

   -l 查看详细信息(读写权限等)  r 读 w写 x执行 - 无

   -d 递归显示

切换路径: cd  家目录

   cd + 文件夹名 进入某一文件夹

   cd . 当前路径

   cd .. 上一级路径

   cd -  返回上一级操作的路径

新建文件夹:mkdir + 文件夹名字

新建文件:touch + 文件名

删除文件夹:rmdir 文件夹名

rm -r 文件夹名

删除文件:rm -r 文件名

复制文件:cp  文件名  新建文件名(当前路径)

    cp   文件名  目标路径

    cp -r 文件夹

移动(剪切)文件:mv  文件名 目标路径

快捷键:  

放大终端:ctrl  shift  +

缩小终端:ctrl -

历史命令:上下键

清屏:ctrl L

自动补全:tab

vi编辑器

三种模式:插入模式、命令行模式、底行模式

命令行a i o—>插入模式—esc—>命令行模式—shift :—>底行模式

命令行模式:

复制:yy

删除:dd

撤销:u

反撤销:ctrl r

回到开头:gg

移末尾:G

回到行首:0

回到行尾:$

整理代码:gg=G

插入模式

底行模式

保存:w

退出:q

保存退出:wq

强制退出:q!

分屏:vsp

查找:/str

替换:s/str/str2  将光标所在行的第一个符合查找的内容替换

全部替换:%s/str/str2/g

取消高亮:nogl

显示行号:set nu

不显示行号:set nonu

进制转换

二进制 八进制 十进制 十六进制

十进制转二进制:1.短除法:除二取余

  1. 拆分法:拆成二的平方

二进制转八进制:一位八进制的数可以用三位二进制数表示

二进制转十六进制:一位十六进制数需要四位二进制数表示

练习

11001101010

八进制:03152

十进制:1642

十六进制:0x66a

11110110:

八进制:0366

十进制:246

十六进制:0xf6

词法符号

关键字 标识符 运算符 分隔符 标点符号

关键字:

分类:存储类型:auto static extern register

    数据类型:char int long short float double signed unsigned

    构造类型:struct union enum

    选择类型:if else switch case default

    循环类型:for while goto do break continue

    其他:void typedef const sizeof return volatile

标识符

用于标识变量 

命名规则:

1.由数字字母下划线组成

  1. 不能以数字开头
  2. 不能用关键字
  3. 见名知意

变量

概念:在程序运行当中会发生变化的量

定义:存储类型 数据类型 变量名

运算符

参与运算的符号

算数运算符 逻辑运算符 位运算符 关系运算符 赋值运算符 三目运算符

算数运算符:+ - * / % ++ --

 逻辑运算符:&& || !

单目运算:只需要一个操作数

双目运算:需要两个操作数

三目运算:需要三个操作数

7.27笔记

截断法则

逻辑与中,前面位假,后面不运算

或,前面真后面不运算

位运算

对二进制补码进行操作

& | ~ ^ << >>

&(与):全1则1,有0则0

|(或):有1则1,有全0则0

~(按位取反):1->0 0->1

^(异或运算):相同为0不同为1

原码

反码

补码

正数

二进制本身

本身

本身

负数

二进制本身

原码取反

反码加一

最高位是符号位

<< 操作的补码 左边丢弃0 右边补0

>> 右边丢弃 左边补0

置1公式:a|(1<

置0公式:a&(~(1<

关系运算符:

< > >= <= == !=

三目运算符·:

表达式1   ?表达式2:表达式3

判断表达式1是否成立,如果成立执行表达式2,如果不成立执行表达式3

运算符的优先级

单目运算符:!~  ++  --

算数运算符:+ / % + -

移位关系:<< >>

关系运算:> < >= <= == !=

位与运算:^ |

逻辑运算: && ||

条件运算:? :

赋值运算:= += -= *=

口诀:单算移动关与  异或逻条赋

          单目运算,从右向左运算

标点符号:,;() {} []

分割符:换行 空格 tab

变量

在运行过程中会发生变化的量

定义格式:存储类型 数据类型 变量名

赋值方式:

  1. 在定义时赋值:int a=10;
  2. 定义之后再赋值:int  a;

a=10;

变量的分类:

局部变量:定义于函数内部

全部变量:定义在函数内部

区别:

内部变量

全局变量

定义位置

局部变量:定义于函数内部

全部变量:定义在函数外部

作用域

在声明函数中可以使用

全部可用

初始值

随机值

值位为0;

存储位置

栈区

全局区

生命周期

和定义函数共存亡

和整个程序共存亡

数据类型

char 字符型 1个字节

int 整型 4个字节

short 短整型 2个字节

long 长整型 4个字节

float 单精度浮点型 4个字节

double 双精度浮点型 8个字节

常量

概念:

在程序中不会发生变化的量

分类:
1.字符型常量

用单引导引起来的字符型数据

只能包裹单个字符

2.字符串常量

多个字符拼接在一起 使用双引号引起来的

对于一个字符串来说字符串的个数是实际个数+1

sizeof():查看数据所占内存大小 返回值是所占内存的字节数

3.整型常量

4.浮点型常量

5.指数常量

3*10^3——>3e3

e前面可以是小数也可以是整数,但是e后面只能是整数

6.标识常量

宏定义:起标识作用(宏代替,宏替换)

定义格式:#define 宏名 常量或者表达式

命名规则1.数字字母下划线

  1. 数字不能开头
  2. 不能用关键字
  3. 见名知意

特点:只能单纯的替换  不可以进行运算

输入输出

    1. 按照字符输入输出

输入的是字符 输出的也是字符

get char putchar都是函数实现输入输出

函数三要素:功能 参数 返回值

getchar:

功能:从终端获取一个字符

参数:输入字符的ascii码值

返回值:一个整型数据,输入字符的ascii码值

2.按照格式输入输出
printf

功能:按照格式向终端输出

参数:format:字符串 按照字符串中的格式输出

返回值:输出字符个数

格式

"%d"   int类型

"%f"   float类型

"%lf"   double类型

"%c"    char类型

"%s"   字符串类型

"%#x"   十六进制的数

"%#o"   八进制的数

"%p"    地址

"%e"   指数

"%.n"   保留小数点后几位

"%m"  列宽

scanf

功能:按照格式从终端输入

参数:format:字符串 按照字符串中的格式输入

返回值:正确输入的个数

回收垃圾字符
  1. 空格

可以回收一个或多个字符(空格 回车 tab)

char  a,b,c;

scanf("%c %c %c",&a,&b,&c);

printf("a=%c b=%c c=%c",a,b,c);

  1. %*c

只能回收一个字符

char a,b,c;

scanf("%c%*c%c%*c%c",&a,&b,&c);

printf("a=%c b=%c c=%c",a,b,c);

7.28

强制转换

int a=5;

float b;

b=(float)a/2;

分支语句

if(判断表达式){

语句块

}

else if(判断表达式){

语句块

}

else{

语句块

}

7.31

数组

概念:具有一定顺序的若干量的集合

定义数组:存储类型 数据类型 数组名[元素个数]

数组名:代表数组的首地址,地址常量,不可以被重新赋值,不能为左值,不可以进行++,--操作

数组中的每一项都是变量,称之为元素

数组的更新:

访问元素:数组名[元素下标] 下标从零开始(注 意 数 组 越 界 问 题

特点:

  1. 定义数组的数据类型和后面要存储的数据类型相同
  2. 内存是连续的
  3. 遵循标识符的命名规则
  4. 下标从0开始,n个元素,下标是n-1
  5. 同一个函数中,数组名和变量名不能重名

分类:

一维数组 二维数组

一维数组

  1. 格式:存储类型 数据类型 数组名
  2. 访问元素:数组名[下标] 下标从零开始
  3. 数组名:数组首地址 不能为左值
  4. 初始化:
  1. 全部初始化
  2. 部分初始化
  3. 未初始化

引用:

  1. 先定义后引用
  2. 每一次引用只能用一个元素,可以用for循环遍历
  3. 引用时注意数组越界
  4. 打印数组元素地址,使用%p格式
  5. 引用时数组的内存地址是连续的

数组的大小:

  1. 元素的个数*数据类型的大小
  1. sizeof()

数组的元素个数:

  1. 数组的大小/数据类型的大小
  2. sizeof

清零函数:

  1. bzero

使用方法:

#include

void bzero(void *s,size_t n);

功能:将内存空间设置为零;

参数:s:需要清空空间的首地址

n:需要清空的空间字节大小

返回值:无

  1. memset

使用方法:s

#include

void memset(void *s,int c,size_t n);

参数:s:需要清空空间首地址

    n:需要清空的空间的大小

    c:将空间设置成的值 默认是0,设置成其他不准确

返回值:清空空间后的首地址

字符数组

概念:原来存放若干字符的集合(含字符串),数据类型是char类型

定义:在定义字符数组是,容易省略元素个数,需要注意是否越界

输入输出:

  1. for循环,打印格式%c
  2. gets

char *gets(char *s);

功能:从终端输入一个字符串

参数:s:字符数组的首地址

返回值:目标字符串的首地址

注意:使用gets时不关心数组越界的问题,使用时会报警告

  1. puts

int puts(const char *s);

功能:想终端输出一个字符串

参数:s:要输出的字符数组的首地址

返回值:输出字符的个数

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值