学习笔记1

这篇博客详细介绍了C语言的基础知识,包括Linux基本操作、数据类型、标识常量、函数指针、数组、指针、结构体、数组、函数、文件I/O、控制语句等内容。同时,还涉及到了一些Linux高级知识,如shell命令、文件管理、进程间通信,并对TCP/IP协议、网络编程中的三次握手和四次挥手进行了讲解。此外,博客还涵盖了数据结构中的栈和队列概念。
摘要由CSDN通过智能技术生成

一:C语言

(一)linux基本操作

(1)gcc编译的四个过程

  • 预处理:gcc -E hello.c -o hello.i

作用:预处理主要前面处理带“#”的指令,如#include、#define等,还要删除注释,添加行号和文件名标识

  • 编译:gcc -S hello.i -o hello.s

作用:编译过程是把预处理完的文件进行一系列的词法分析、语法分析、语义分析及优化后生成相应的汇编代码文件

  • 汇编:gcc -c hello.s -o hello.o

作用:将代码转换成机器可以执行的指令

  • 链接:gcc  hello.c

 作用:链接库,生成可执行文件   

(2)文件类型

d-目录文件

-:普通文件

b-二进制文件(二进制可执行的程序)

s-套接字文件

c-字符文件

v-块文件

(3)进制

① 二进制

以0b开头

101=1 * 2^2+0 * 2^1+1 * 2^0=5

②十进制转二进制

1、倒除取余法(适用于数值较小的数)

2、凑数法(适用于数值较大的数)

③八进制

0开头

八进制的一位等于二进制三位

八进制转十进制:按位权展开和

八进制--通常用来表示文件的权限

④十六进制

十六进制--通常用来表示一个地址

1(0-9,a-f)

0x开头

十六进制的一位等于二进制四位

八进制转十六进制--先转成二进

(二)数据类型

(1)Int  char  short  long  float  double

①char ---占一个字节(1Byte==8bit)

修饰字符

取值范围:

无符号---0~255(0-2^8-1)

有符号--0代表正数,1代表负数

-128~127

符号位不参与计算

计算机存储数据一定是以补码的形式存储

源码:数据本身的二进制数

反码:源码取反

补码:反码+1

+:0-127

-:-128 ~ -1

unsigned signed

②short---短整型,占2个字节==16bit

取值范围:0-2^16-1

修饰整型的数据

③int ---整型,占4个字节==32bit

取值范围:0-2^32-1

④long--长整型--如果是64位系统,占8个字节,32位占四个字节

⑤float--浮点型(单精度)--占四个字节==32bit

保留小数位6-7位

⑥double--双精度--占8个字节

保留小数位15-16位

(2)标识常量 宏定义

#define M 3

(3)static---静态存储

作用:

修饰局部变量,延长生命周期

修饰全局变量,限制作用域,只能再本文件使用

修饰函数,限制作用域

(4)extern--调用外部文件--只能修饰全局变量

(5)自加操作

注:在赋值时前加与后加有所不同

{A=0;

B=A++;

B=0,A=1;}

{ A=0;

B=++A;

B=1,A=1;}

(6)逗号运算符

a=(1,2,3);

a==3;

(7)逻辑运算符

1、逻辑与

(表达式1)&&(表达式2)

全真为真,有假为假

2、逻辑或

(表达式1)||(表达式2)

全假为假,有真为真

!!!注意:如果表达式1就为真,不会执行表达式2,直接执行下面的代码

3、逻辑非

!(表达式)

真假互换

(三)输入与输出

(1)位运算:

!!!每一位都要去运算

1、位与:&

逻辑:全1为1,有0则0

2、位或:|

逻辑:全0为0,有1则1

3、取反:~

10互换

4、异或:^

逻辑:相同为0,不同为1

①用异或使两个数交换

a=a^b;

b=a^b;

a=a^b;

②第一位的清零与置一操作

1.清零

a&(~(1<<1))

2.置一

a|(1<<1)

(2)格式控制符:

%d---以整型的形式输出

%f----以小数形式输出

%e---以指数形式输出

%c--以单个字符输出

%s--以字符串输出

%%---%

%x--以十六进制形式输出

%#---显示进制形式输出

%o--以八进制形式输出

%u--以无符号的十进制输出

%*c---抑制符

转义字符:

\n--换行

\t---制表

\r---回车

\ '--'

\ "---"

\ \ ---\

修饰符:

m---域宽--%md

m为正数是右对齐,负数为左对齐,如果超过域宽,就原样输出

.n--限制小数位

会自动四舍五入

(四)控制语句

计算机执行我们的程序,一定从上往下一行一行执行,顺序执行控制语句就是用来改变计算机的这种顺序执行,按照我们想要的顺序去执行,比如,循环,分支,跳转等

选择语句

switch(表达式)---一般为常量表达式

{

 case 表达式1:语句块1;break;

 case 表达式2:语句块2;break;

 case 表达式3:语句块3;break;

 case 表达式4:语句块4;break;

......

default :语句块n; }

(五)数组

(1)选择排序

 

(2)冒泡排序

 

(六)指针

(1)普通变量

int a;

int *p=&a;

(2)一维数组

int a[10]={11,22,33,44,55};

int *p=a;

*p+1=12

*(p+1)=22

*p=11

*p++=11

*p=22

(*)p++=22

*p=23

(3)二维数组

①指针数组

char a[3][6]={ "hello","world","nihao"};

char *p[6];

p[0]=a[0];

printf("%c\n",*(p[0]+2));//打印的第0行的第2个元素

 printf("%s\n",*a);//打印第0行所有的内容

 printf("%s\n",*(a+1));//打印第1行所有的内容

 printf("%s\n",*a+1);//从第0行第一个开始打印

 printf("%s\n",a[0]+1);//

 printf("%c\n",*(*a+1));//打印的第0行第一个字符

 printf("%c\n",*(*a+1)+1);

②数组指针

int main(int argc, char *argv[])

{

 char a[3][6]={ "hello","abcde","world"};

 char (*p)[6]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值