C语言、、

C语言概述

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。跨平台的特性,以一个标准规格写出的C语言程序可包括类似嵌入式处理器以及超级计算机等作业平台的计算机平台上进行编译。

诞生于贝尔实验室 丹尼斯·里奇 以肯尼斯·蓝·汤普森设计的B语言为基础发展来的

1989年 第一个完备的C标准,“C89” ANSIC 2018最新C18

特点:(1)简洁的语言(2)具有结构化的控制语句(3)丰富的数据类型(4)丰富的运算符

34种运算符(5)可对物理地址进行直接的操作(6)代码具有较好的可移植性(7)可生成高质量、目标代码执行效率高的程序

1、广泛性 2、简洁性 3、结构完善

C语言的缺点主要表现为1、数据的封装性弱

2、语法限制不太严格

##C语言 位运算

1TB 1024GB

1GB 1024MB

1MB 1024KB

1KB 1024B

1byte 8bit

二进制转十进制

(10110)2=(22)10

8421法

(16 8 4 2 1)

101101 11001001 10010111

十进制转二进制

37 100101 逆转8421 最近的数

33 10001

八进制转二进制
567 101 110 111
234 010 011 100
105 001 000 101

二进制转八进制 右往左
011 010 111 100 110 32746
011 010 111 101 110 32756
011 101 110 101 011 35653
100 101 101

1110010110
11011101011

十六进制转二进制
109CBE 0001 0000 1001 1100 1011 1110 ABCDEFG10 11
A017B

二进制转十六进制
1 0110 1011 16B
1101111010
100110011101

在这里插入图片描述

正数的 原码 反码 补码 不变 8位

负数原码最左为1 反码全部取反0变1 1变0
在这里插入图片描述
35 -27 -17 1001 0001 1110 1110 1110 1111

数据类型

在这里插入图片描述
char 字符型 特殊的整型 占据1个字节(1byte–8bit)
int 整型 占据4个字节 (32位)
浮点型
单精度浮点型float 4byte
双精度浮点型double 8byte
双长精度浮点型long double 8byte 或者 16byte
(%f)小数点后6位
在这里插入图片描述

运算符与表达式+ - * / %

5/2=2 5.0/2 = 2.5 🈲15.5%4 ❌ -15%4=-3 -15%-4=3 15%-4=3 6%15=6

在这里插入图片描述
在这里插入图片描述
真为1 假为0
a&&b 不为0 则为1 1代表正确
a=10 b=5
a!=5|| b++ b=5
sizeof 字节数
char +int =int

算法的基本结构

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

复合语句

在这里插入图片描述

if语句 没有大括号跟一条

在这里插入图片描述

if else if else if else if

else

switch(整形 字符型 枚举型) break;

*![在这里插入图片描述](https://img-blog.csdnimg.cn/47f8acc8f3494b35b93e7f1e20d04ae0.png

条件表达式

max=a>b?a:b;

循环结构

while

int i=1;
while(i<=10){

printf(“%d\n”,i);
i++;
}
在这里插入图片描述

do while 都执行一次

int i=1;
do{

printf(“%d\n”,i);
i++;
}while(i<=10);
在这里插入图片描述

for语句

for(int i;i<=10;i++){
printf(“%d\n”,i);
}
在这里插入图片描述

中断语句

break 跳出本层循环,执行循环后的语句
在这里插入图片描述

continue 跳出本次循环,执行下次循环
在这里插入图片描述

函数

函数的调用 先声明后调用
函数形式:
返回值类型要与函数类型相同

数组

一维数组

int a[10];

int a=5
int b[a];错❌

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
int a[5]
sizeof(a) 4*5=20
在这里插入图片描述
int i=0;
int a[10]={50,60};
for(i=0;i<10;i++){
printf(“%d\n”,arr[i]);
}
在这里插入图片描述

二维数组

int a[2][3] 定义的2个长度为3的一维数组
在这里插入图片描述
在这里插入图片描述

结构体 类似JAVA的实体类 Struct

是一种可以由我们自己定义的数据类型
是由一系列具有相同类型或不同类型的数据构成的数据集合
先声明后定义
struct student{
int num;
int score;
float avg;
}
//声明
1.struct student Tom={90,90,90};
Tom.num=12;
//定义
2.struct student{
int num;
int score;
float avg;
}Jerry,Jun;

3.struct {
int num;
int score;
float avg;
}Tom

在这里插入图片描述

typedef

不是用来创造类型,而是给已有的类型取别名
typedef int TYPE
#define SIZE 5
int a;
TYPE b;//相当于int b;

typedef struct student{
int num;
int age;
}STU;

STU Tom
struct student Tom;

结构体数组

struct student{
int num;
int score;
float avg;
}

struct student class2 [3]={{90,90,90},{90,90,90},{90,90,90}};

struct student{
int num;
int score;
float avg;
}class3 [5];

结构体

union cata{
int num;
int score;
};

struct student{
int num;
int score;
float avg;
union cata ct;
};

struct student sd;
sd.ct.num=100;

struct student te;
te.ct.score=100;

在这里插入图片描述

函数

函数的递归和调用

在这里插入图片描述

函数作用域

指针

printf(“%p\n”,&a)
&a 地址(指针)

指针变量

int a;
int *p; //存放同一类型的
a=10;
p=&a;
p=100 ❌
p= c ❌

指针变量的使用

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
2.在这里插入图片描述
3.在这里插入图片描述

野指针

在这里插入图片描述
在这里插入图片描述

空指针

在这里插入图片描述

数组的地址在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

指针与一维数组

在这里插入图片描述
p=a // p=&a[0];
在这里插入图片描述
p=&a[2] p+3 p+5 有地址 野指针
在这里插入图片描述
p[1]=40

p=a // p=&a[0]
a[1] *(a+1) *(p+1) p[0]

总结

在这里插入图片描述
在这里插入图片描述

指针与二维数组

地址在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
内容*(地址)
在这里插入图片描述
在这里插入图片描述

行指针

在这里插入图片描述
在这里插入图片描述

字符常量’ ’ %d %c

大写转小写 +32 char b=‘A’; b=b+32; 97 a 65 A
\x hh 1-2位 16进制 \ddd 1-3位 8进制

字符串常量" "%s在这里插入图片描述

“abcDEF” 7字节 \0 结束标志
size of(“”)字节
strlen(“”)长度
在这里插入图片描述

字符数组

爆了 \0 Strl[6]
在这里插入图片描述
在这里插入图片描述
第二个是字符串

char str2[5]=“ABCD”;
str2[1]=‘X’; AXCD
str2=“ERTH”;❌
str2[5]=“HIJK”;错❌

字符串与指针

char str2[5]=‘ABCD’
printf(“%s\n”,&str[2]) CD
printf(“%s\n”,str) ABCD
char *p=‘HIJK’;
printf(“%s/n”,p) HIJK;

字符串的输入与输出

char a[10]=“ABCD”;
char ch=‘X’;

printf(“%s\n” a) ABCD
printf(“%c\n”,ch) X
putchar(ch) X
puts(a) ABCD 自动换行
strcpy(a,b) 把b复制给a
在这里插入图片描述
连接函数
在这里插入图片描述
strcmp 比较值大小 F>E a>b 正数
a<b 负数
相等为0
strcmp(a,“男”)==0

文件

file *fp
fopen();
在这里插入图片描述
fclose();

文件的读写

ch=fgetc(fp); E
fputc(‘A’,fp);
!feof()==0

文件的读写

fgets (str,5,fp)
fputs(str,fp)
fwrite(&cl[0],sizeof(NODE),3,fp)
fread(&cl[3],sizeof(NODE),1,fp);
pritntf(cl[3].name)
pritntf(cl[3].tel)

文件的定位读写

fseek(fp,0,SEEK_SET) 读第一个信息

fseek(fp,sizeof(NODE),SEEK_SET) 读第二个信息

fseek(fp,-1*sizeof(NODE),SEEK_END) 读最后一个信息

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值