c补week1(linuxc基本操作及C语言部分基础知识)-创新互联

一、linux常见命令

清屏:ctrl+l

创新互联是一家网站设计公司,集创意、互联网应用、软件技术为一体的创意网站建设服务商,主营产品:响应式网站设计品牌网站设计成都全网营销。我们专注企业品牌在网站中的整体树立,网络互动的体验,以及在手机等移动端的优质呈现。网站制作、成都网站设计、移动互联产品、网络运营、VI设计、云产品.运维为核心业务。为用户提供一站式解决方案,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏析悦目的作品,网站的价值服务。

在终端输入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 标号;

标号:

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

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


文章名称:c补week1(linuxc基本操作及C语言部分基础知识)-创新互联
网站路径:http://hbruida.cn/article/dpdpjd.html