昨夜,偶遇一题,初时甚简,遂乐,不料结果相差毫厘之间。看答案,断点调试竟不能得出原因。改之亦无法,故断然求解于一学长,学长思虑再三,无解。于是,吾今早求助吾师,师看了几眼,便得结果。吾大惑,感学问之境不可深也,现余写下,聊表敬意,亦使有缘者看到此文能聊以解惑也,则吾甚蔚。
void fun(char*sp ,int *ct)
{
int i,n=0;
char *t=sp; //sp是地址,将sp的地址赋给指针t
while(*t)
{
n++;
t++;
}
for(i=0;i<3;i++)
{
ct[i]=0;
}
for(i=0;i<n;i++)
{
if(sp[i]=='e'&&sp[i+1]=='a')ct[0]++;
if(sp[i]=='o'&&sp[i+1]=='u')ct[1]++;
if(sp[i]=='i'&&sp[i+1]=='u')ct[2]++;
}
}
1
char *t=sp;
这句话的意思就是:将sp指针赋给t是指向char类型的指针;
相当于复制,拷贝。
复制过后,t的变化和sp无关。
while(*sp)
{
n++;
sp++;
}
而数组sp如果++了,就是sp指针指到最后一个了,就不能执行下面的判断.
而给复制了话,sp是不变的,就可以进行下面的搜寻判断工作。
上帝保佑,二级必过!