请问个关于指针的问题,谢谢

ymy1248227142 2012-05-27 07:38:47
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int a;
}arg;
void f1(void*);
int main()
{
arg x;
x.a=90;
f1((void*)&x);
return 0;
}
void f1(void*m)
{
arg b;
arg *n;
n=(arg*)m;
b.a=(arg*)m->a; //为什么这行是错的?
b.a=n->a; //为什么这行又是对的?
printf("...%d...\n",b.a);
}

问题如注释所说
b.a=(arg*)m->a; //为什么这行是错的?
b.a=n->a; //为什么这行又是对的?
编译:gcc p.c
报错:
p.c:19:20: warning: dereferencing ‘void *’ pointer [enabled by default]
p.c:19:20: error: request for member ‘a’ in something not a structure or union
...全文
89 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
因为 b不是指针类型的啊
ymy1248227142 2012-05-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

(arg*)m->a

((arg*)m)->a
[/Quote]我晕,原来是这么个问题,谢谢啦
sundayX 2012-05-27
  • 打赏
  • 举报
回复
(arg*)m->a

((arg*)m)->a

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧