//#define _CRT_SECURE_NO_WARNINGS //#include<stdio.h> //#include<string.h> // //如何写出好(易于调试)的代码? //1.代码运行正常 //2.bug很少 //3.效率高 //4.可读性高 //5.可维护性高 //6.注释清晰 //7.文档齐全 //常见的coding技巧 //1.使用assert //2.尽量使用const //养成良好的编码风格 //添加必要的注释 //避免编码的陷阱 // //模拟实现strcpy //strcpy-字符串拷贝 // //int main() //{ // char arr1[20] = "xxxxxxxxxxxxxxxxxx"; // char arr2[] = "helllo\0";//\0也拷贝了 // // strcpy(arr1, arr2); // printf("%s\n", arr1); // return 0; //} // //void my_strcpy(char* dest,char* src) //{ // while (*src != '\0')//不是\0的部分拷贝 // { // *dest = *src; // dest++; // src++; // } // *dest = *src;//\0的部分拷贝 //} // //void my_strcpy(char* dest, char* src) //{ // while (*src != '\0') // { // *dest++ = *src++; // } // *dest = *src; //} // //void my_strcpy(char* dest, char* src) //{ // while (*dest++ = *src++)//'\0'的ASCII码值为0,既拷贝了\0,又使得循环停止 // { // ; // } //} // //#include<assert.h> //void my_strcpy(char* dest, char* src) //{ // assert(src!=NULL);//断言 // assert(dest!=NULL);//断言 // // while (*dest++ = *src++)//'\0'的ASCII码值为0,既拷贝了\0,又使得循环停止 // { // ; // } //} // //#include<assert.h> //void my_strcpy(char* dest,const char* src) 加了const如果不小心写反了,写成*src++=*dest++ ,会报错 //{ // assert(src != NULL);//断言 // assert(dest != NULL);//断言 // // while (*dest++ = *src++)//'\0'的ASCII码值为0,既拷贝了\0,又使得循环停止 // { // ; // } //} //int main() //{ // char arr1[20] = "xxxxxxxxxxxxxxxxxx"; // char arr2[] = "helllo\0"; // my_strcpy(arr1,arr2);//1.目标空间的起始地址,2.源空间的起始地址 // printf("%s\n", arr1); // return 0; //} // //int main() //{ //1. // //int num = 10; // //int* p = # // //*p = 20; // //printf("%d\n", num); // // //2. // //const修饰变量,这个变量称为常变量,不能被修改,但是本质上还是变量 // // // const int num = 10; // num = 20;//err // // //int* p = # // //*p = 20;//此时仍会改变num的值,有违const的初衷 // // //3. // //int num = 10; // //const int* p = # // const修饰指针变量时 // const 如果放在*的左边,修饰的时*p,表示指针指向的内容,是不能通过指针改变的 // //*p = 20;//err // // // printf("%d\n", num); // // // return 0; //}标签:src,const,函数,dest,char,num,strcpy,字符串,模拟 From: https://www.cnblogs.com/morphism/p/17138011.html