如何在自己定义的函数中以void类型的指针(void *)作形参

10 views
Skip to first unread message

刘小林

unread,
Nov 17, 2009, 8:36:36 PM11/17/09
to ph4...@googlegroups.com
各位,小弟有一问:如何在自己定义的函数中以void类型的指针作形参,并且还要在该函数中操作传入的参数。
例如,假设有如下代码段:

-----------------------------
void test (void * p)
{
//一些包括对传入参数的操作,比如,得到传入的值。
}
-----------------------------

王锐

unread,
Nov 17, 2009, 9:27:21 PM11/17/09
to ph4...@googlegroups.com
最近老是有人问些编程的问题啊,呵呵
void func(void* p);
int main(int argc,char** argv){
int a=0;
func((void*)&a);
printf("%d\n",a);
return 0;
}
void func(void* p){
*(int*)p = 1;
return;
}
2009/11/18 刘小林 <ziy...@gmail.com>
google一哈,你就晓得



Little GY

unread,
Nov 17, 2009, 8:58:22 PM11/17/09
to ph4...@googlegroups.com
按正常途径的话是把p重新解析,如果你想强制的话也行,不过要自己恢复堆栈。
 
一种常用的就是类型转换ex:xx=(int)p;   *(int*)p=xx;  struct s* xx =  (struct s*)p;如果传入的是指针,注意其在执行过程中,指针的有效性
不知道还有什么其他方式,我常用的基本上就是这些。
2009/11/18 刘小林 <ziy...@gmail.com>

刘小林

unread,
Nov 18, 2009, 12:20:50 AM11/18/09
to ph4...@googlegroups.com
呵呵,谢谢。脚踏实地的编程才是成长的正道啊。

2009/11/18 王锐 <evers...@gmail.com>:

singyea

unread,
Nov 18, 2009, 12:23:39 AM11/18/09
to ph4nt0m
~/tmp/void$ cat test.c
#include <stdio.h>
void test(void *p)
{
        fprintf(stdout,"%d",*(int*)p);
}
int main(void)
{
        int a = 32;
        test((void *)&a);
        return 0;
}
~/tmp/void$ gcc -o test test.c
~/tmp/void$ ./test
32
--------------------------------
指针的强制转化。

09年新晋3D主流网游《天下贰》,网易六年亿资打造

王锐

unread,
Nov 18, 2009, 9:39:35 AM11/18/09
to ph4...@googlegroups.com
是正道,不过这个maillist一般都是讨论这类问题的。

2009/11/18 刘小林 <ziy...@gmail.com>
>>
>>
>>
>>
>> >>
>


--
google一哈,你就晓得



王锐

unread,
Nov 18, 2009, 9:40:29 AM11/18/09
to ph4...@googlegroups.com
打错了,一般都不讨论这类问题。

2009/11/18 王锐 <evers...@gmail.com>
是正道,不过这个maillist一般都是讨论这类问题的。

 
Reply all
Reply to author
Forward
0 new messages