一种较高级的字符拷贝函数的写法

本文介绍了一个优化过的字符拷贝函数实现,并讨论了如何利用指针和const关键字来提高函数的安全性和效率。
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++)
 {}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值