【发布时间】:2013-07-22 07:55:22
【问题描述】:
有人可以向我解释一下这种行为吗?
static short nDoSomething(const char* pcMsg, ...)
{
va_list pvArgument;
long lTest;
void* pvTest = NULL;
va_start(pvArgument, pcMsg);
pvTest = va_arg(pvArgument, void*);
lTest = (long) pvTest;
va_end(pvArgument);
return 0;
}
如果我在 main 中这样调用这个函数:
int main(int argc, char* argv[])
{
char acTest1[20];
nDoSomething("TestMessage", 1234567L, acTest1);
return 0;
}
我以为pvTest的地址会在lTest中,但实际上它包含1234567 ...
这怎么可能?
【问题讨论】:
-
当你说
pvTest的地址时,你的意思是:pvTest指向的地址,对吧?你很困惑为什么那个是1234567,对吗? -
要获取
pvTest的地址,你必须获取它的地址:(long)&pvText。
标签: c++ casting void-pointers variadic-functions