C语言本上怎么没这种用法(void *)

unsignedcharerr;unsignedcharf;unsignedchara(unsignedchari,void*j)//void*j怎么理解{if(j==(... unsigned char err;
unsigned char f;
unsigned char a(unsigned char i,void *j) //void *j怎么理解
{
if(j==(void *)0) return 0; //j==(void *)0怎么理解
*(unsigned char *)j=1;  //*(unsigned char *)j=1怎么理解
return 1;
}
void main()
{
f=a(1,&err);
}
求大神指点
展开
 我来答
金色潜鸟
2013-05-22 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5541万
展开全部
void *j; 参数2是指针,指针类型是 void ,指针指向某存储块的首地址,首地址开始后的数据是许多字节。
(void *)0 强制转化0 为 void类型指针 地址值,同 NULL.
j==(void *)0 理解为 j==NULL
(unsigned char *)j 把 void 型指针 转换为 unsigned char 型指针
*(unsigned char *)j 是 j 指向的值 (类似平时 语句里的*p) ,无符号char型(即1字节无符号整型)
*(unsigned char *)j = 1; j 指向的 无符号char型(即1字节无符号整型)数值 赋为 1。(类似平时 语句里的*p = 1;)
追问
你的答案也蛮好的,可惜不能采纳两条为最佳答案,谢谢
yxs0005
2013-05-22 · TA获得超过242个赞
知道小有建树答主
回答量:226
采纳率:0%
帮助的人:89.4万
展开全部
void *j
j为指针 void* 使用时可以转为任意类型的指针
//*(unsigned char *)j=1怎么理解
将指针 转换为char类型的指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友83cdc1c
2013-05-22 · TA获得超过5788个赞
知道大有可为答主
回答量:1907
采纳率:100%
帮助的人:819万
展开全部
void *就是无类型指针类型,意思是这个j仅仅是一个指针,它所指向的内存空间没有被认为是某一种特定的类型。

j被定义成void *,(void *)0把0强制类型转换为void *,便于跟j进行同类型比较,所以j==(void *)0的意思是,判断j的值是不是0,即j是否指向0地址。
*(unsigned char *)j,首先看(unsigned char *)j,意思是把j强制类型转换为unsigned char *型,那么*(unsigned char *)j就是把j 指向的内存空间的一个字节强制当作unsigned char来用。*(unsigned char *)j=1就是把1写入j指向的那个一字节空间。
更多追问追答
追问
unsigned char a(unsigned char i,  *j) 
{
if(j==0) return 0;
*j=1; 
 return 1;
}
哪改成这样有什么不同?
unsigned char a(unsigned char i,  *j) 
{
if(j==0) return 0;
*j=1; 
 return 1;
}
哪改成这样有什么不同?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式