void my_strcpy(char arr1[],char arr2[])
{
while(*arr1++=*arr2++)
{}
}
这里的字符拷贝运用了指针,当arr1的赋值为非'\0'时循环继续,当为"\0"时循环终止
这里还要考虑是否存在空指针影响程序的运行,可以加入一个判断语句
if(arr1!=NULL && arr2!=NULL)
同时可以加入一个assert语句用来发现出错的地方(断言)
#include<assert.h>
assert(arr1!=NULL)
assert(arr2!=NULL)
使用const来修饰不变的量,防止内容被改变
const char*arr2
const的用法:
const放在指针变量的*左边时,修饰的是*p,也就是说:不能通过p来改变*p(num)的值。
const放在指针变量的*右边时,修饰的是指针变量p本身,p不能被改变了
优化后的代码为
void my_strcpy(char arr1[],const char arr2[])
{
assert(arr1!=NULL);
assert(arr2!=NULL);
while(*arr1++=*arr2++)
{}
}
本文介绍了一个优化过的字符拷贝函数实现,并讨论了如何利用指针和const关键字来提高函数的安全性和效率。
5341

被折叠的 条评论
为什么被折叠?



