一、linux常见命令

清屏:ctrl+l

在终端输入clear

补全键:tab键

上下箭头:查找输入的历史命令

打开一个和当前路径相同的终端:ctrl+shift+n

1.ls显示当前目录

ls  -a:显示当前路径下的所有文件(包括隐藏文件))

.开头的文件:隐藏文件

.代表当前目录

..代表上一级目录

Ls  -l:显示当前路径下的文件的详细信息(属性)

选项可以配合去用

2.pwd:显示当前所在的绝对路径(以根目录开始的路径)

3.Cd 路径:切换路径

Cd : 直接跳转至家目录

Cd ..:跳转至上一级目录

Cd -:跳转至上一次操作的时候的路径

4.touch 文件/文件路径  一次可以创建多个

5.Mkdir  文件夹名/文件夹路径   一次可以创建多个

6.rm 文件/文件路径  一次可以删除多个

7.rm -r 删除文件/文件夹(-r 递归)

-i 每次删除之前会提示

Rm -ri

8.rmdir 删除空文件夹

增删改查

9.Cp 源(文件/-r文件夹)  目标文件  复制

10.移动:Mv 源文件 目标文件

改名字:mv 原文件名 修改的文件名

二、vim编辑器

如果文件存在,直接打开进行编辑

如果文件不存在,创建文件并且打开编辑

三种模式:

  1. 刚进入:命令行模式
  2. 插入模式:打代码
  3. 底行模式:光标在底下闪

命令行模式到插入模式:i

插入模式退出到命令行模式:esc

命令行模式到底行模式;shift+ :

底行模式退出到命令行模式:esc

底行模式:

w:保存

q:退出

q!:强制退出

wq:保存并退出

Wq!:保存并强制退出

Set nu:设置行号

Set nonu:取消行号

命令行模式:

yy:复制

p:粘贴(从光标的下一行去粘贴)

nyy:复制n行

dd:删除(剪切)

Ndd:删除n行(剪切n行)

u:撤回

Ctrl+r:反撤销

Vim hello.c

gcc  hello.c :生成一个名为a.out的可执行文件

如果直接这样去编译多个文件,gcc直接去编译:会覆盖之前生成的a.out

要给生成的可执行文件起名字:(-o参数)

gcc hello.c -o hello(自己起的名字)

怎样去执行可执行文件:./可执行文件名

三、程序的设计步骤

Vim(编辑)->gcc(编译)->./a.out(执行、调试)

四、计算机的数据表示

4.1非数值数据:

字符         图片   声音     视频

‘a’ ‘z’

字符串

“shang”

字符在计算中是以ascii码去存储的       一个字节占8个bit

‘A’用65表示    ‘a’用97表示

大写转小写只需要+32即可

printf(“格式控制串”,输出表);

格式控制串:原样输出的内容+格式化符

输出表:要输出的内容

%d表示以整型输出

%f以浮点型进行输出

%c以字符型进行输出

示例:

Int a = 65;

printf(“a= %d\n”,a);

a = 65

4.2数值数据

4.2.1数值数据

十进制(逢十进一)(0-9)

0  1  2  3  4  5  6   7  8  9   9+1= 10

二进制(逢二进一)(0-1)

0  0+1=1   1+1= 10

八进制(逢八进一)(0-7)

7 + 1 = 10

十六进制(逢十六进一)(0-9  a(A)-f(F)(15))

F+1 = 10

为了区分十进制、八进制、十六进制

一般在八进制之前加上0

在十六进制之前加0x (a-f) 0X (A-F)

67(十进制)  067(八进制) 0x67(十六进制)

4.2.2进制转换

将其他进制转换为十进制:

1、二进制转换为十进制: 1101:1*2^0 + 0*2^1 + 1*2^2+ 1*2^3= 13

2、八进制转换为十进制: 076: 6*8^0 + 7*8^1 = 62

3、十六进制转换为十进制:0xfa: a*16^0 + f*16^1 = 250

将十进制转换为其他进制:

  1. 十进制转换为二进制: 28:除二倒取余 :11100
  2. 十进制转换为八进制: 28:除八倒取余:034
  3. 十进制转换为十六进制: 28:除十六倒取余:0x1c

二进制和八进制关系:

0-7去表示:3位二进制数

000---------0      111-------7

二进制--------------------八进制

000----------------------------0

001----------------------------1

010----------------------------2

011----------------------------3

100---------------------------4

101---------------------------5

110---------------------------6

111---------------------------7

二进制转换为八进制:111  101  101---->0755

八进制转换为二进制: 07245:---->  111 010 100 101

二进制和十六进制关系:

0-f(15)去表示:4位二进制数

0000--------0      1111----f(15)

二进制数-----------十六进制

0000---------------------0

0001---------------------1

0010--------------------2

0011--------------------3

0100--------------------4

0101--------------------5

0110--------------------6

0111--------------------7

1000-------------------8

1001-------------------9

1010-------------------a

1011-------------------b

1100-------------------c

1101-------------------d

1110-------------------e

1111-------------------f

二进制转换为十六进制:0001  1110  1101 ----> 0x1ed

十六进制转换为二进制: 0xfca4:----> 1111 1100 1010 0100

4.3 基本数据类型

4.3.1关键字 32个

系统预先定义好的,有特定的含义,并且都是小写 ( int  a    int int //error)

数据类型: int  short  float  char  long  double  struct  void  union(共用体)  enum

控制语句:if  else  switch  case  break  default  continue  do  while  goto  for

存储类型: extern  static  auto  register

const:只读

Return:返回函数

Signed:有符号数

Unsigned:无符号数

Sizeof:计算所占的字节数 (sizeof(数据类型)/sizeof(变量名))

Typedef:去给已有的类型去起别名  typedef  int  a;

Volatile:防止编译器优化的

如何去定义一个变量:

存储类型   数据类型   变量名;

4.3.2 标识符

程序员自己去定义的,一般用来定义变量名,函数名

  1. 由数字字母下划线构成
  2. 第一个不能为数字
  3. 不能与关键字重复

4.3.3基本数据类型

int  short  float  char  long  double:

32OS:

字符型:Char(1字节)

整型:int (4字节) long(4字节) short(2字节)

浮点型:float(4字节) double(8字节)

64OS:

字符型:Char(1字节)

整型:int (4字节) long(8字节) short(2字节)

浮点型:float(4字节) double(8字节)

4.4有符号数和无符号数

  1. 有符号数(signed)

正数和负数

正数的原码、反码、补码都是一样的

最高位是符号位,1表示负数,0表示正数

计算机都是以补码的形式存储的

以一个字节为例子

10:  0000 1010

-10:: 1000 1010

以两个字节去表示:

10 : 0000 0000 0000 1010

-10: 1000 0000 0000 1010

负数

原码:最高位是符号位,1表示负,0表示正

反码:符号位不变,其他位取反:(1->0 , 0->1)

补码: 反码+1

-10:原码: 1000  1010

反码: 1111 0101   (符号位不变,其他位取反)

补码: 1111 0110 (反码加1)

计算机是以补码形式存储:

负数:求补码的原码

  1. 减1:,符号位不变,其他位取反
  2. 补码的补码就是原码

补码:          1111 0110, (-10)原码是多少:(减1,,符号位不变,其他位取反)

-1:          1111 0101

取反(符号位不变)  1000 1010 (-10)

补码:          1111 0110

取反(符号位不变)  1000 1001

加1:           1000 1010  (-10)

示例:  -34的补码:原码:1010  0010

反码:1101  1101

补码: 1101 1110

计算机中:

-10    1111 0110

+ 10     0000 1010

补码:10000 0000

取反:1 1111 1111

原码: 0000 0000

Short:2个字节:

-10 : 1111 1111 1111 0110

10:   0000 0000 0000 1010

补码; 1 0000 0000 0000 0000

取反:1 1111 1111 1111 1111

原码: 0000 0000 0000 0000

Unsigned  Char  a = 257

printf(“%d\n”,a);  1

258转换为二进制:1 0000 0010

Char只有八bit:    0000 0010  ----》2

2.无符号数(unsigned)

只有正数:正数的原码,反码,补码都是一样的

4.5家族

4.5.1字符型家族

Char(1字节) 8bit

值域

Unsigned:正数(0-255)

补码:0000 0000 --------》1111 1111

Signed:有正数也有负数 (-128->127)

补码:1000 0000--------》 0111 1111

-128  ------>127

-128的原码: 1 1000 0000

Unsigned char b  =  260;   4

Signed  char  a =  130;   -126

整型家族:

Int

值域

Unsigned:

补码:

0000 0000 0000 0000 0000 0000 0000 0000---->1111 1111 1111 1111 1111 1111 1111 1111

Signed:

补码

1000 0000 0000 0000 0000 0000 0000 0000---->0111 1111 1111 1111 1111 1111 1111 1111

浮点型家族:

Float:单精度浮点数,有效位:6-7位

Double:双精度浮点数,有效位数:15-16位

五.常量

从程序开始到程序结束都不会发生改变的量

1. 字符常量

‘a’  ‘b’  ‘c’

2. 整型常量

二进制:0110

八进制:076

十进制:23

十六进制:0xff

注意:默认情况下,整型常量是有符号的(如果是无符号会添加后缀)

无符号的整型:86U

长整型:86L

无符号的长整型 86UL

3. 浮点型常量

0.0001   1000(浮点型常量包含整型常量)

1e-4        1e+3

4.​​​​​​​字符串常量

“hello”

​​​​​​​5.

#define 宏名 表达式

注意:(1)宏名大写、小写都可以,但是一般情况下用大写,为了和变量区分

(2)后面没有分号

六、变量

6.1 定义

只要定义就会开辟内存空间

c语言内存分区:

6.2如何定义变量

存储类型 数据类型 变量名;

存储类型:决定了开辟的内存空间在内存中的哪个分区

auto 、static、extern、register

数据类型:决定了开辟的内存空间的大小

变量名:开辟的内存空间的名字

//定义一个整型变量

int a;//auto int a;

6.3局部变量

定义在函数体(任何函数体)内部的变量

6.4全局变量

定义在函数体外部的变量

6.5存储类型

auto、extern、static、register

auto:修饰局部变量,存储在栈区

extern:修饰全局变量,存储在静态区

static:既可以修饰局部变量,又可以修饰的全局变量,存储在静态区

register:修饰局部变量,存储在寄存器中

总结:

  1. 除了static和register修饰的局部变量外,其它都存储在栈区
  2. 全局变量存储在静态区
  3. 静态变量存储在静态区

6.6初始化

int a = 10;//初始化

int a;

a = 10;//赋值

总结:

  1. 局部变量没有初始化其值为随机值
  2. 全局变量没有初始化其值为0

auto:修饰的变量存储在栈区,只能修饰局部变量

register:修饰的变量存储在寄存器中,只能修饰局部变量(修饰的变量不一定存储在寄存器中,如果寄存器有空闲的,存储在寄存器中,否则存储在栈区)

extern:修饰的变量存储在静态区,只能修饰全局变量

注意:程序可以由多个.c文件组成,但是main函数(程序的入口函数)只能有一个

Static:既可以修饰局部变量,又可以修饰全局变量,修饰的变量存储在静态区

修饰局部变量的时候:1、延长局部变量的生命周期,局部变量不初始化,其值为0,若局部变量进行初始化,只能初始化一次

Static也可以修饰全局变量:限制作用域,只能在本文件内使用

静态局部变量有以下特点:
该变量在全局数据区分配内存;
静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化;
静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0;
它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束

6.7生命周期和作用域

生命周期就是从什么时候开辟空间到什么时候释放空间

作用域:

使用它的范围

  1. 局部变量:

生命周期:从定义开始,到模块结束({})结束

作用域:大括号内

2、Static修饰的局部变量:

生命周期:从定义开始,到程序结束

作用域:大括号内

3、全局变量:

生命周期:从定义开始,到程序结束

作用域:整个程序

4.Static修饰的全局变量:

生命周期:从定义开始,到程序结束

作用域:本文件内

七、运算符

优先级

单算移关与,异或逻条赋

单目运算符、算术运算符、左移,右移、关系运算符、与运算符、异或、或运算符、逻辑运算符、条件运算符、赋值

7.1算术运算符

+,- ,*,/,%(取余),++,--

%不能用于浮点数

++在前:先自加,在赋值

++在后:先赋值,在自加

注意:如果a++,++a单独成为一条语句,都相当于a = a+1

7.2关系运算符

>  <  >=  <=  ==  !=

注意:1< a< 5 //error

等号的书写:将常量放在等号的左边

7.3逻辑运算符

&&  ||  !

表达式1&&表达式2

&&截断法则:有一个为假,结果就为假,前一个为假,后面就不再进行运算了

||运算符

表达式1  || 表达式2

||截断法则:有一个为真,结果就为真,前一个为真,后面就不再进行运算了

7.4sizeof运算符

Sizeof(数据类型) sizeof(变量名)

7.5三目运算符

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

判断表达式1的值是否成立,如果成立就将表达式2的值作为整个表达式的值,如果不成立,就将表达式3的值作为整个表达式的值

7.6 逗号运算符

表达式1,表达式2,.................表达式n

从左向右依次计算每个表达式的值,最后将表达式n的值作为整个表达式的值

7.7位运算符

&  |  ~  ^  <<  >>

八、输入输出与三大结构

函数:有独立功能的一个模块

标准输入输出函数:printf  scanf(对变量的类型没有要求)

输入:从键盘拷贝数据到内存中

输出:从内存中拷贝数据到显示屏上

顺序结构、选择结构、循环结构

8.1 顺序结构

语句按照一定的先后顺序去执行

8.2选择结构

8.2.1单分支if选择结构

If(表达式)

{

语句;

}

先去判断表达式是否成立,如果成立,则执行语句;

8.2.2双分支if语句结构

if(表达式)

{

语句1;

}

else

{

语句2;

}

先判断表达式是否成立,如果成立,执行语句1,否则,执行语句2;

8.2.3多分支if语句结构

If(表达式1)

{

语句1;

}

Else if(表达式2)

{

语句2;

}

。。。

Else

{

语句n;

}

从上往下,依次判断每个表达式的值,如果表达式的值为真,就执行对应的语句

8.2.4 switch语句

Switch(表达式)

{

Case 标号1:

语句1;

Case 标号2:

语句2;

Case 标号3:

语句3;

。。。

Case 标号n:

语句n;

default:

语句n+1;

}

注意:(注意编程规范,不然很丑)

1、表达式不能为float类型

2、标号要为一个常量

3、表达式等于标号的时候(如果没有标号等于表达式,去找default),一直去执行冒号后面的语句,直到switch case语句结束,或者遇到break跳出。

结束条件:1、switch。Case语句结束

2、遇到break,跳出

8.3循环结构

什么是循环?

三要素:循环的起始条件,循环的终止条件、循环变量的变化

8.3.1 for循环

For(表达式1; 表达式2;表达式3)

{

循环体;

}

表达式1:循环的起始条件

表达式2:循环的终止条件

表达式3:循环变量的变化

首先执行表达式1,然后去判断表达式2是否成立,如果成立,执行循环体,然后去执行表达式3,如此反复,直到表达式2不成立,跳出循环

8.3.2while语句

While(表达式)

{

循环体;

}

先判断表达式是否成立,成立的话,执行循环体,否则,跳出循环

do while语句

do

{

循环体;

}while(表达式);

先执行循环体,然后和while一样。

总结:while和do while的区别

while:先判断,在执行,语句至少执行0次

do while:先执行,在判断,语句至少执行1次

Break和continue的区别

break:1、跳出循环 2、跳出switch语句

Continue:跳出本次循环,执行下一次循环

8.3.3 goto语句

无条件跳转语句;

goto 标号;

标号:

标号的命名规则:和标识符的命名规则相同。(好的名字:见名知意)

c补week1(linux c基本操作及C语言部分基础知识)相关推荐

  1. Linux——Linux C语言编程基础知识

    源程序的编译 在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 通常在gcc后跟一些选项和文件名来使用gcc编译器.gcc 命令的基本用法如下:: gcc [option ...

  2. Linux进程管理:进程和线程基础知识

    <Linux进程管理:进程和线程基础知识> <Linux-进程管理> <C语言进程的内存地址空间分配> <进程和线程模型> <(1)Linux进程 ...

  3. r语言工作路径linux,R语言实用基础知识_工作路径-注释-安装和卸载R包_2019-12-01...

    R语言的实用基础知识有很多,都是我在工作和学习中所整理的,有的是看书整理的,也有的是从网络上的各种博客.各种资源获取的,所以我采用日更的方式进行支持整理和更新,希望能够帮到屏幕前的你! 今天是我日更的 ...

  4. linux下tc、htb、iptables基础知识及openwrt 下qos使用介绍

    htb基础知识:Linux Htb队列规定指南中文版:http://wenku.baidu.com/view/64da046825c52cc58bd6beac.html TC基础知识: Linux 的 ...

  5. linux的vi编辑器计算工具,2018-1-2Linux基础知识(19)vi编辑器及bash算数

    在上一章当中我们讲述了vim的基本操作,例如我们如何打开文件及关闭文件,以及如何进行编辑等,以及讲到了vim的诸多模式中之间的转换和常用的编辑命令,那么我们接下来介绍vim的末行模式及内建命令行接口的 ...

  6. Linux学习总结(十七)-shell 基础知识

    该篇内容很杂,但还是不难理解,就不逐个贴图举例. 一 先介绍几种常用字符: 1 * 匹配任意个任意字符 2 ?匹配一个任意字符 3 # 注释符号,符号后的语句不被执行 4 \脱意字符,后面跟带含义字符 ...

  7. Linux(centos7.9)常用命令大全及基础知识

    linux中数组的索引从0开始,其他默认从1开始,例如没有第0列,从第1列开始 在Unix中一切(包括网络套接口)都是文件 在命令行中,无论几个空格,都当成一个空格看待 在linux中,在命令行中通过 ...

  8. Linux包管理器及包安装工具基础知识

    部分内容摘入出处:yum与apt的区别:原创文章,转载请注明出处. 文章目录 一.概述 处理器架构 发行版概念 二.两大主流发行版 RedHat发行系列 Debian发行系列 三.命令与包格式区别 各 ...

  9. step1.day12 Linux下使用C语言编程基础总结

    一:系统准备 1.VMware软件安装,用来在现在操作系统下模拟Linux系统而不必重装系统 2.Linux系统安装,推荐使用Ubuntu14.02版本,较为稳定 注意:安装步骤,选择稍后安装虚拟机, ...

最新文章

  1. eclipse 创建maven web项目_Eclipse创建第一个Scala项目(过程)
  2. 五、pink老师的学习笔记——CSS精灵技术(sprite)
  3. 论文浅尝 - ISWC2021 | 当知识图谱遇上零样本视觉问答
  4. 表单及数据提交、表单的作用、服务端接收提交的数据、php处理数据流程、文件域及文件域中数据处理、php展示数据(响应)
  5. 城市大轰炸++(洛谷P1847题题解,Java语言描述)
  6. leetcode题解54-螺旋矩阵
  7. 团队作业3 需求分析与系统设计
  8. CTP接口封装相关贴---集合
  9. 利用CNN进行面部表情识别
  10. 修改devcpp5.11的语言选项
  11. 产品研发中存在的问题和缺陷
  12. python程序设计基础上机题5.16-----5.26(2)
  13. 2022-2027年中国钛加工材行业市场全景评估及发展战略规划报告
  14. 2022社群扫码进群活码完整系统源码+修复版的
  15. linux安装debian桌面,在Debian 10 Buster上安装Cinnamon桌面环境的方法
  16. 大数据培训靠不靠谱?如何选择培训机构?
  17. Python使用asyncio+aiohttp异步爬取猫眼电影专业版
  18. C语言写的md5函数
  19. cxf 实名认证---全国公民身份信息系统
  20. LeetCode :: Palindrome

热门文章

  1. 常见的网络品牌营销的方法和渠道
  2. 手动搭建一个https服务器,并颁发证书
  3. 小公司一个人如何进行测试
  4. 【2016新年版】年度精品 XP,32/64位Win7,32/64位Win8,32/64位Win10系统
  5. mysql密码强度不够怎么解决_安装ISPConfig 遇到的mysql密码强度问题
  6. 爬虫实战-爬取房天下网站全国所有城市的新房和二手房信息(最新)
  7. 全国青少年编程等级考试python一级真题2020年12月(含题库答题软件账号)
  8. Flutter开发之——Icon图标
  9. 高德地图开发-- 自定义图标
  10. 抖音引流必须知道的三个要点!!!!