#include
void main()
{
void copy_string(char *from,char *to);
char a[]="I am a teacher.";
char b[]="You are a student.";
char *fa,*tb;
fa=a;
tb=b;
printf("%s\n",a);
printf("%s\n",b);
copy_string(fa,tb);
printf("%s\n",a);
printf("%s\n",b);
}
void copy_string(char *from,char *to)
{
int i=0;
while(*from!='\0')
{
*to=*from;
from++;
to++;
}
to[0]='\0';
}
这是书上的例子,就是自定义函数中的i,不明白是什么意思,为什么最后有to[0],因为to++之后,指针已经不是指向数组首地址了,但是to[0]='\0'不就是将字符数组的首个元素赋成\0了吗,求大神解答一下自定义函数中的to[0]是什么意思?谢谢
因为to++,此时的to不是开始的to
to[0]只是相对于现在的to的“首地址”,这个地址已经由于前面的++,而其实指向相对于原来的to来说在结尾的地方
注意这儿的参数是个char型的指针,也就是说,它只指向的是一个字符的地址,你说的to它不是将字符串的数组的
第一个赋值为零,这儿你是没搞清楚,你是任务这个指针参数指向的是整个数组,这就错了,它是指向的是一个字符的地址,是
from++和to++语句实现了,这个指针可以遍历一遍整个数组,所以那个to[0]='\0'是将给这个语句来了最后一个字符,及c语言中的字符中止符。
你也可以t[0]='\0'改为*to=''\0'这样也对
上面中的“任务”改为“认为”。是我粗心打错了!