首页 > 用户发贴区 > 编程问题提问区 > 指针问题(急)
2008
05-01










#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的地址内容?


最好能够详细介绍一下这里的指针的指向。


留下一个回复