C语言框架讲解

3.转义字符


转义字符

释义

\?

在书写连续多个问好时使用,防止他们被解析成三字母词

\ '

用于表示字符常量 '

\ "

用于表示一个字符串内部的双引号

\

用于表示一个反斜杠,防止它被解释为一个转义序列符

\a

警告字符,蜂鸣

\b

退格符

\f

禁止符

\n

换行

\r

回车

\t

水平制表符

\v

垂直制表符

\ddd

ddd表示1~3个八进制的数字,如 : \130 X

\xdd

dd表示2个十六进制数字,如: \x30 0

4.函数


#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

voidAdd(intx,inty) {

intsum=x+y;

printf("%d\n", sum);

}

intmain() {

intnum1=0;

intnum2=0;

scanf("%d %d", &num1, &num2);

Add(num1,num2);

return0;

}

5.操作符


算数操作符

+ - * / %

移位操作符

>> <<

位操作符

& 按位与

| 按位或

^ 按位异或

赋值操作符

= += -= *= /= &= ^= |= >>= <<=

单目操作符

! 逻辑反操作

- 负值

+ 正值

& 取地址

sizeof 操作书的类型长度

~ 对一个数的二进制按位取反

-- 前置、后置--

++ 前置、后置++

* 间接访问操作符(解引用操作符)

(类型) 强制类型转换

整数在内存中存储的是补码一个整数的二进制表示有三种:源码、反码、补码

一个数的最高位表示它的符号位

针对负数的

-1:

1000000 00000000 00000000 00000001 (-1源码)

1111111 11111111 11111111 11111110 (-1反码) //补码-1

1111111 11111111 11111111 11111111 (-1补码) //反码+1

正整数

源码 = 反码 = 补码

逻辑操作符

&& ||

条件操作符

a > b ? a : b

逗号表达式

逗号隔开的一串表达式

逗号表达式是从左向右依次计算

整个表达式的结构是最后一个表达式的结果

下标引用、函数调用和结构成员

[] () . ->

常见关键字

autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifint longregisterretrunshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile

C语言提供的关键字

1.C语言提供的,不能自己创建关键字

2.变量名不能是关键字

auto (是自动的 - 每个局部变量都是auto修饰的,默认省略)

{

auto int num = 0;

}

extern (申明外部符号的)

register (寄存器关键字)

int main() {

//大量/频繁被使用的数据,想放在寄存器中,提升效率

register int num = 100; //建议存放到寄存器上,只是建议,编译器说了算

}

signed 有符号的 10 -20

unsigned 无符号的

static静态的

struct 结构体

union 联合体(共用体)

void 无

计算机中的数据可以存储到哪些地方

寄存器 更小

高速缓存 几十MB

内存 8G-16G

硬盘 500G-买的

网盘 2T-免费的

从下往上,空间越小,造价越高,速度越快

**define和include 不是关键字,是预处理指令**

typedef类型重命名

typedef unsigned int u_int

int main() {

unsigned int num = 100;

||

u_int num2 = 100;

}

关键字static

//静态的

1、static 修饰局部变量

static 修饰局部变量,改变了局部变量的生命周期(本质上是改变了变量的存储类型)

2、static 修饰全局变量

3、static 修饰函数

static 修饰全局变量,是的这个全局变量只能在自己所在的源文件(.c)内部可以使用,其他源文件不能使用

全局变量,在其他源文件内部可以被使用,是因为全局变量具有外部链接属性,但是被static修饰之后,就变成了内部链接属性,其他源文件就不能链接到这个静态的全局变量了

static 修饰函数,使得函数只能在自己所在的源文件内部使用,不能在其他源文件内部使用

本质上:static 是将函数的外部链接属性变成了内部链接属性!(和static 修饰全局变量一样)

voidtest() {

inta=1;

a++;

printf("%d\n",a);

}

intmain() {

inti=0;

while(i<10) {

test();

i++;

}

return0;

}

6.#define 定义常量和宏


define 是一个预处理指令

1.define 定义符号

2.define 定义宏

#define ADD(x,y) x+y

//可以写成

#define ADD(x,y) ((x) + (y))

int main() {

printf("%d\n",ADD(2,3));

//问题

printf("%d\n",4 * ADD(2,3)); //变成了4*2+3

}

三、指针


1、内存


问题

1、内存是怎么编号的?

32位 - 32根地址线 - 物理线 - 通电 - 1/0

带你信号转换成数字信号:1和0组成的二进制序列

00000000 00000000 00000000 00000000

...

01111111 11111111 11111111 11111111

...

10000000 00000000 00000000 00000000

...

11111111 11111111 11111111 11111111

2的23次方个序列

-----------------------------------------------------------------------

2、一个这样的内存单元是多大空间?

2的32次方个内存单元

假设一个内存单位是1bit,就可以管理4,294,967,296个bit位的空间

char 大小是 1 个字节,所以--->

经过平衡,最终一个内存单元给一个字节的大小

4,294,967,296 byte = 4,194,304 KB = 4096 MB = 4GB

拿到变量的地址使用 %p

int a = 10;

printf("%p\n", &a);

int* pa = &a;

*pa = 1002020; // * 解引用操作 *pa 就是通过 pa 里边的地址,找到 a

//pa 是用来存放地址的,在C语言中 pa 叫是指针变量

// * 说明 pa 是指针变量

// int 说明 pa 执行的对象是 int 类型

指针就是地址

2、指针的大小


指针的大小是相同的

在32位电脑上是 4 个字节

在64位电脑上是 8 个字节

为什么

指针是用来存放地址的

指针需要多大空间,取决于地址的存储需要多大空间

32位电脑上是32 bit位的二进制序列 需要4个字节(一个地址是32个bit位,是4个字节)

64位电脑上是64 bit位的二进制序列 需要8个字节(一个地址是64个bit位,是8个字节)

可以理解成指针的大小跟地址线的多少有关,而地址线又跟 32 位或者 64 位平台有关

四、结构体


结构体可以让C语言创建新的类型出来,用来描述复杂对象

structStu {

charname[20];

intage;

doublescore;

};

structBook {

charname[20];

floatprice;

charid[30];

};

intmain() {

structStus= { "张三",20,85.5 }; //结构体的创建和初始化

printf("1:%s %d %.2lf\n", s.name, s.age, s.score); //结构体 变量.成员变量

structStu*ps=&s;

printf("2:%s %d %.2lf\n", (*ps).name, (*ps).age, (*ps).score); //对指针进行解引用操作

printf("3:%s %d %.2lf\n", ps->name,ps->age,ps->score);

return0;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值