万能指针void *的今世今生

C标准定义了NULL指针,它作为一个特殊的指针变量,表示不指向任何东西。要使一个指针变量为NULL可以给它赋一个零值。为了测试一个指针变量是否为NULL,你可以将它与零值进行比较。之所以选择一个零值是因为一种源代码约定。就机器内部而言,NULL指针的实际值可能与此不同。这种情况下,编译器将负责零值和内部值之间的翻译转换。
(《C和指针》P96)
void*的特点:
1、void *可以接受任意类型的指针;
2、void *无法取值;(若想让一个void *取值,必须用到强制类型转换。)
3、库函数malloc、calloc、ralloc的默认返回值为void *;
4、让void *自加一是,(步长)为一;(此处暂且用一个不恰当但容易理解的词“步长”来解释。)

拓展:
1、指针的算术运算:指针+int || 指针 - int,此时一定要考虑到指针的步长;
2、指针 - 指针:结果为一个整数,该整数表示两指针之间相差的元素的个数;
3、给指针赋值:一定要给指针赋以相同指针类型的值;
若长指针赋给短指针:引起数据丢失现象;
若短指针赋给长指针:会发生多取数据事件;
4、特别注意浮点型指针的特殊性;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值