C语言:把指针赋给另外一个指针和指针自加

昨夜,偶遇一题,初时甚简,遂乐,不料结果相差毫厘之间。看答案,断点调试竟不能得出原因。改之亦无法,故断然求解于一学长,学长思虑再三,无解。于是,吾今早求助吾师,师看了几眼,便得结果。吾大惑,感学问之境不可深也,现余写下,聊表敬意,亦使有缘者看到此文能聊以解惑也,则吾甚蔚。

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是不变的,就可以进行下面的搜寻判断工作。

上帝保佑,二级必过!

发布了32 篇原创文章 · 获赞 7 · 访问量 4022

猜你喜欢

转载自blog.csdn.net/qq_43026792/article/details/88309460