在线时间954 小时
UID336767
注册时间2011-12-29
NXP金币721
TA的每日心情 | 开心 2018-7-23 21:04 |
---|
签到天数: 103 天 连续签到: 1 天 [LV.6]常住居民II
金牌会员
 
- 积分
- 16702
- 最后登录
- 1970-1-1
|
本帖最后由 lkl0305 于 2015-9-27 23:27 编辑
今天给大家分享一下void *的问题。
============================================
一、问题描述:
前些时在学习库函数时,发现有很多地方使用了void *,那这个到底是什么含义呢?
比如:
void *memset(void *s, int ch, size_t n);
又再如:
二、解决办法:
1、首先,void 的含义是“空”,或“无类型”的含义。
2、而*表示指针。
3、那void *就表示“无类型指针”,那么即是可以指向任何数据类型的指针了。
4、也就是说void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。
比如:
int *ap;
void *p;
p = ap;
5、我们来看看memset(void *s, int ch, size_t n);函数中的参数void *s。
表示任何类型的指针都可以传入memset中,这也真实地体现了内存操作函数的意义,因为它操作的对象仅仅是一片内存,而不论这片内存是什么类型。
比如:
char charray[100];
memset(intarray,0,100*sizeof(char));
又如:
int intarray[100];
memset(intarray,0,100*sizeof(int));
三、感想与收获:
1、void *就表示“无类型指针”,是可以指向任何数据类型的指针。
2、如果函数的参数可以是任意类型指针,那么应声明其参数为void*
|
|