类型转换

类型提升

printf("%d",sizeof'A');//不是1而是4(int)

这里写图片描述

注意不仅是表达式中的操作数会被类型提升,函数的参数同样如此。printf的%d可以打印出char,short,long,因为它们都被隐式转换为int。

指针转换

char *a;
(unsigned short*)a  //小指针转大指针,容易越界,多访问1个字节
//不同类型的指针索引不同大小的内存
long *a;
(short*)a  //大指针转小指针,丢失2个字节,动态内存可能内存泄漏
//但是要注意,如果用char* 或者void*来指向内存中开辟好的空间,
//每次使用的时候都会强制转换为其真实类型的指针的情况下,则不怕上述的转换,
//只要你保证指针转换的时候指向了内存开始的地方,同时保证不会索引到非法内存就可以了,
/C语言很灵活(容易出错)

Hash,散列表

hash散列表是一种提高访问表中数据的方法,它不是线性的搜索表中的元素,而是一下子跳到最相像的元素来存储值。

这是通过精心地向表中载入元素实现的,应用散列函数代替线性顺序,把数据值和位置联系起来,散列函数会产生0-表长度减1的数值,它就是所需要存储数据的索引。

如果这个位置已经被填充,那么就从这个位置继续向前搜索,直到找到一个空的位置。另一种办法是建立一个链表,挂在这个位置的后面,所有散列到这个位置的元素都添加到这个链表中,甚至可以在这个位置后面在挂一个散列表。

当查找一个数据的时候,不需要从表的第一个数据开始查起,而是先产生该数据项的散列函数值,并根据这个值找到表中相应的位置,并从该位置开始查找该数据项。

散列表是一种被广泛使用和严格测试过的表查找优化方法,编译器,操作系统和数据库中都有它的影子。

Reference

C专家编程

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值