Chinaunix

标题: 请教取址问题(结贴) [打印本页]

作者: lishizelibin    时间: 2009-09-23 20:03
标题: 请教取址问题(结贴)
typedef char * va_list;
#define _INTSIZEOF(n)   ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof(int) - 1) )
#define va_start(ap,v) ( ap = (va_list)&v + _INTSIZEOF(v) )
#define va_arg(ap,t)    ( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )
#define va_end(ap)      ( ap = (va_list)0 )

int CDECL MessageBoxPrintf (TCHAR * szCaption, TCHAR * szFormat, ...)
{
TCHAR   szBuffer [1024] ;
va_list pArgList ;
// The va_start macro (defined in STDARG.H) is usually equivalent to:
// pArgList = (char *) &szFormat + sizeof (szFormat) ;
va_start (pArgList, szFormat) ;
// The last argument to wvsprintf points to the arguments
_vsntprintf (szBuffer, sizeof (szBuffer) / sizeof (TCHAR),
   szFormat, pArgList) ;
// The va_end macro just zeroes out pArgList for no good reason
va_end (pArgList) ;
return MessageBox (NULL, szBuffer, szCaption, 0) ;
}

能帮我解释一下pArgList = (char *) &szFormat + sizeof (szFormat) 这句么?特别使这里的&szFormat取址行为!我在迷惘中。

[ 本帖最后由 lishizelibin 于 2009-9-24 21:24 编辑 ]
作者: net_robber    时间: 2009-09-23 20:29
char * p

p != &p


p is a address to a string
and &p is the address of variable p
作者: lishizelibin    时间: 2009-09-23 20:35
标题: 回复 #2 net_robber 的帖子
嗯,谢谢,sizeof (szFormat)不是字符串的长度么?难道是该指针变量szFormat的长度?
作者: lishizelibin    时间: 2009-09-23 20:41
标题: 回复 #2 net_robber 的帖子
谢谢,我傻了,谢谢你,我变傻了;突然把sizeof当作了strlen

[ 本帖最后由 lishizelibin 于 2009-9-23 20:42 编辑 ]
作者: net_robber    时间: 2009-09-23 21:13
为什么要修改帖子题目??

论坛的历史帖子可以作为资料,让网友们查阅学习


麻烦把题目改回来吧,别人看着方便




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2