一个简单的问题,为什么函数和main中的地址不一样?我尝试在没有va_list
的情况下实现printf实现,这对我来说是必要的,或者它是更好的实现它,但我想早点知道答案。
void func (char *format, ...)
{
char *p = (char *) &format + sizeof(format);
char *s = format;
for(;*s != '\0'; ++s) {
if (*s == '%') {
switch (*(s+1))
{
case 'd':
printf("%d - address\n", ((int *)p)); //This should point on second argument
p += sizeof (int);
++s;
break;
}
}
}
}
int main(int argc, char** argv) {
int a=2123213;
printf("%d - address\n",&a);
func("text%d",a);
}