巩固加新学

指针的复习

将下面的字符串按字母顺序(从小到大)排序

指向指针的指针

char **p;结合性从从右到左

int *p[n]  数组指针

int (*p)[n]  指针数组

如果俩个指针变量都指向同一个数组中的元素,则两个指针变量值至差就是俩个指针之间的元素个数

 如果俩个指针变量都指向同一个数组中的元素,则可以进行比较。指向前面的元素的指针变量小于指向后面的元素的指针变量。

void *p 表示指针变量p不指向一个确定的类型,他的作用仅仅是存放一个地址。void指针它可以指向任何类型数据

const,可以改变str的值,但不可以改变指向

不可以改变,只读的

输出所有的学生的成绩,用指针函数

指针函数和函数指针(是指向函数的指针变量,int(*p)(int,int))

宏定义

预处理命令,源文件的前面

加上#undef 名字作用域就取消了

宏定义表示数据类型

宏定义和typedef的区别

宏定义只是简单的字符串替换,是在预处理完成的,而typedef是在编译时处理的

 带参数的宏定义

条件编译

结构体

 

结构体指针

 

结构体变量做函数参数

通过print输出学生的信息

结构体指针变量做函数参数

动态存储分配 

1.分配内存空间函数:malloc,calloc

2.释放内存空间函数:free

链表

链表的组成

1.头指针:存放一个地址,该地址指向第一个元素。

2.结点:用户需要的实际数据和链接节点的指针

建立链表

静态链表

动态链表

创建

输出

删除

 插入

typedef定义类型

 

表明结构体类型

声明整形数组类型

 

typedef int count;和# define count int 

#define是在预编译时处理的,他只是简单的字符串替换,而typedef是在编译时处理的。

位处理 

按位与&

1.清零 将1110 0101的第二位清零

   1110 0101

& 1111 1011

    1110 0001

2.取一个数中某些指定为(例:取出低八位)

按位或|

将大写字母转化为小写字母,小写字母转换为大写字母

异或^

同号为0,异号为1

1.使特定位反转

2.与0异或,保留原值

3.交换两个值,不需要临时变量

a=a^b; b=b^a; a=a^b;

取反~

单目运算符

左移运算符<<

a=<<2,将a的二进制值左移两位,右边补0,左移n次就×2的n次方(此结论只适用于该数左移时被溢出舍弃高位中不包含1的情况)。

右移运算符>>

低位舍弃,高位补0,右移n次就/2的n次方(此结论只适用于该数右移时被溢出舍弃高位中不包含1的情况)。注意符号问题,看自己编译系统。

位段

1.位段成员的类型必须指定为unsigned或int

2.若某一位短段要从另一个字开始存放

unsigned a:1

unsigned b:2    一个存储单元

unsigned   :0

unsigned c:3     另一个存储单元

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值