C语言:自定义函数实现strcpy功能及优化全过程

strcpy函数的功能是把含有‘\0’结束符的字符串复制到另一个地址空间中。在本篇文章中我将自定义一个函数my_strcpy来实现strcpy的功能,并介绍优化函数的过程。

1.基础功能

strcpy函数的功能是把含有‘\0’结束符的字符串复制到另一个地址空间中。自定义函数my_strcpy,定义两个数组arr1,arr2,char arr1[] = "################",char arr2[] = "bite"。将arr2中的内容复制到arr1中。

my_strcpy()中传递数组arr1,arr2的地址,创建指针变量,函数是复制字符串直到'\0',因此使用while循环直至复制的字符串到'\0'的位置,指针解引用完成内容复制。

#define _CRT_SECURE_NO_WARNINGS

#include

void my_strcpy(char* dest, char* src)
{
	while (*src != '\0')
	{
		*dest = *src;
		dest++;
		src++;
	}
}

int main()
{
	char arr1[] = "################";
	char arr2[] = "bite";
	my_strcpy(arr1, arr2);
	printf("%s\n", arr1);
	return 0;
}

C语言:自定义函数实现strcpy功能及优化全过程_第1张图片

 2.优化函数

1.减少代码

复制内容的过程完全可以精简,*dest++ = *src++;先解引用指针dest和src,再将arr2的值复制给arr1,最后完成指针dest和src的+1。此外,直接写作while(*dest++ = *src++),'\0'的ASCII码是0,当指针到达'\0'时,不满足条件,循环结束。

while (*dest++ = *src++)
	{
		;
	}

2. 防止野指针

野指针指向的位置是随机的,不可知的。为了防止传参造成指针dest和src是野指针,影响程序运行,则需要在复制字符串之前先判读指针dest和src不是野指针。使用断言函数assert。

assert(src != NULL);
assert(dest != NULL);

3.常量化被复制的字符串

在函数实现过程中,被复制的字符串arr2没有发生改变,为了防止书写代码时误操作数组arr2,将arr2地址常量化,使其不能发生改变。(const的使用将会另行介绍)

void my_strcpy(char* dest,const char* src)

总结

那么今天的学习就到这里了。同学们觉得不错的可以给个关注,点赞或者收藏哦!感谢各位同学们的支持。代码希望各位大佬们自行检验哦,毕竟亲手操作让记忆更加深刻,有问题可以随时私信我。

最后推荐大家学习C语言!!!

c语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

你可能感兴趣的:(C语言,c语言,c++,开发语言)