void hello(void*arg) { char*kk="hello"; arg=(void*)kk; return NULL; } main() { void*k; hello(k); char *k2=(char*)k; printf("%s",k); exit(0); } when running ,I get 8Z@ ,not hello,why? thanks for looking at my question
看到有些人对void指针不太清楚,我就试着解释一下,权当抛砖引玉。 大家都知道int *pint是定义了一个指针变量,这个变量里面放的是一个地址,而这个地址里面放的是一个int型的数值。char *pchar是定义了一个指针变量,这个变量里面放的是一个地址,而这个地址里面放的是一个char型的数值。 以此类推……我们也知道在32位计算机上,一般sizeof(pint)是4,也就是说指针变量p的大小是4个字节,每个地址用32位来表示。我们还...
Default constructor called.
Default constructor called.
Default constructor called.
Default constructor called.
Destructor called.
Constructorl called.
Destructor called.
Constructor2 called.
Destructor called.
x=0,y=0
x=5,y=0
x=3,y=-858993460
Destructor called.
Destructor called.
Destructor called.
Press any key to continue
#include
在头文件中。typedef void _void; extern int func(_void); 此时将报错,说_void的用法不正确。 而直接写 extern int func(void); 则正常。 g++ 4.2。 不知道为什么。 谢谢。
一个低级的问题:如果函数的定义是:int checkpass(void);那么就说明调用这个函数时不用向其中传入任何参数了吧。 而(void*) a指的就是变量a的地址吧。 请问这么理解正确吗?谢谢各位的回答
代码先上:
stdafx.h
-------------------------------------stdafx.h----------
#include
比如
[code]time_t time(time_t *tloc);[/code]
原本是返回一个time_t类型的值,但是却这样调用 (void)time(timeval);
在调用函数时,在函数明明有返回值的情况下,
强制转换为void类型,这又有什么玄机呢? 是说明不需要返回值吗?但函数定义时已经定义了返回值,这样编译器为何不会报错呢?
比如下面红色部分;
[code]#include
#include