1 char* strcpy(char* strDest, const char* strSrc) 2 { 3 assert((strDest!=NULL) && (strSrc !=NULL)); //strDest和strSrc不为空 4 char* address = strDest; //保存strDest,用于返回 5 while( (*(strDest++) = *(strSrc++)) != '\0' ); //逐个字符赋值 6 return address; //返回地址 7 }
注意:
1、栈上的char数组,数组名就是一个指针,这个指针的指向不能修改,也就是不能加加减减或者赋值,可以通过[]访问数组元素。
2、文本字符串赋值给char指针,这个指针指向的内容不能修改。
3、调用strcpy方法的时候,要保证:
a、保证两块内存没有重合的地方;
b、strDest最好有刚刚好的内存,可以容纳strSrc的内容。如果strDest内存大了,造成浪费。如果strDest内存小了,溢出,占到其他的内存,导致未定义行为。