|
#include<iostream.h> #include<stdarg.h> void main() { int printf(char*…); char *str=”C++ language”; float f=34.5; printf(“%s,%d,%c,%%,%f\n”,str,25,’c',f); } int printf(char*format…) { va_list ap; char ch; int i=0; va_start(ap,format); while((ch=*format++)!=’\0′) { i++; if(ch!=’%')cout<<ch; else switch(ch=*format++) \\A { case’%':cout<<’%';break; case’s': { char*p=va_arg(ap,char*); \\B cout<<p; }break; case’d': { int p=va_arg(ap,int); cout<<p; }break; case’f': { double p=va_arg(ap,double); cout<<p; }break; case ’c': {char p=va_arg(ap,char); cout<<p; }break; } } va_end(ap); return i; } 在A行中ch指向的应该是%后面的S的地址。 为什么在B行(此时ap指向的地址应该相同的)中输出的却是str的地址内容?
最好能够详细介绍一下这里的指针的指向。 |
|