C语言#21(代码优化)
目录
一、strcpy的作用
二、自己写函数达到strcpy的效果
1、初步实现
2、改进
3、assert的使用
4、指针变量前const的使用
5、改进后
以strcpy为例
一、strcpy的作用
#include<stdio.h>
#include<string.h>
int main()
{
char ch1[20] = "xxxxxxxxxxxxx";
char ch2[10] = "hello";
strcpy(ch1, ch2);//将ch2的内容换到ch1中,同时\0也会换进去
printf("%s\n", ch1);
}
二、自己写函数达到strcpy的效果
1、初步实现
#include<stdio.h>
void my_strcpy(char* dest,char* src)
{
while (*src != '\0')
{
*dest = *src;
dest++;
src++;
}
*dest = *src;
}
int main()
{
char ch1[20] = "xxxxxxxxxxxxx";
char ch2[10] = "hello";
//strcpy(ch1, ch2);//将ch2的内容换到ch1中,同时\0也会换进去
//printf("%s\n", ch1);
my_strcpy(ch1,ch2);
printf("%s\n", ch1);
}
2、改进
3、assert的使用
当出现与你断言的内容相反的内容时会准确的指出错误的位置,如果没有出现与你断言的内容相反的内容,不会对程序的运行产生影响
4、指针变量前const的使用
(1)在*前加const
(2)在*后加const
5、改进后
#include<stdio.h>
#include<string.h>
#include<assert.h>
void my_strcpy(char* dest,const char* src)//加了const,如果src与dest位置反了就会报错
{
assert(*src != NULL);
assert(*dest != NULL);//断言
while (*dest++ = *src++)//将*src++的\0赋给*dest++
{
;
}
*dest = *src;
}
int main()
{
char ch1[20] = "xxxxxxxxxxxxx";
char ch2[10] = "hello";
//strcpy(ch1, ch2);//将ch2的内容换到ch1中,同时\0也会换进去
//printf("%s\n", ch1);
my_strcpy(ch1,ch2);
printf("%s\n", ch1);
}
CSDN-Ada助手: 推荐 Vue入门 技能树:https://edu.csdn.net/skill/vue?utm_source=AI_act_vue
I D K: 电脑下棋那里少写了一行 ret = InWin(board, ROW, COL);
guaiwu_: this.getName 谁来调用attack这个方法,this就是谁 例如:zhangsan.attack(lisi); this.getName就是zhangsan的名字,而lisi在参数的位置, role.getName就是lisi的名字
讨厌java@: 那this getName嘞,我想知道的是这个,后面的那个role,getName也是,第二个朋友说是方法,被打的人,但是第一个不晓得是什么,他说不用管
guaiwu_: set可以理解为你往里面添加数值,而get就是把已有的数值拿出来