#define _CRT_SECURE_NO_WARNINGS #include#include //int main() //{ // const int num = 10; // int* const p = # // int n = 100; // p = &n;//表达式必须是可修改的左值 // // return 0; //} //#include // 把src指向的内容拷贝放到dest指向的空间中 本质上讲,希望dest指向的内容被修改,src指向的内容不应该被修改 //void my_strcpy(char* dest,const char* src) 加了const如果不小心写反了,写成*src++=*dest++ ,会报错 //{ // assert(src != NULL);//断言 // assert(dest != NULL);//断言 // // while (*dest++ = *src++)//' '的ASCII码值为0,既拷贝了 ,又使得循环停止 // { // ;//hello的拷贝 // } //} //#include 把src指向的内容拷贝放到dest指向的空间中 本质上讲,希望dest指向的内容被修改,src指向的内容不应该被修改 strcpy这个库函数 其实返回的是目标空间的起始地址 //char* my_strcpy(char* dest, const char* src) 加了const如果不小心写反了,写成*src++=*dest++ ,会报错 //{ // assert(src != NULL);//断言 // assert(dest != NULL);//断言 // char* ret = dest; // while (*dest++ = *src++)//' '的ASCII码值为0,既拷贝了 ,又使得循环停止 // { // ;//hello的拷贝 // } // return ret;//返回目标空间的起始地址 //} //int main() //{ // char arr1[20] = "xxxxxxxxxxxxxxxxxx"; // char arr2[] = "helllo "; // my_strcpy(arr1,arr2);//1.目标空间的起始地址,2.源空间的起始地址 // printf("%sn", my_strcpy(arr1,arr2));//链式访问 // return 0; //} //int main() //{ // char arr[] = "abc"; // int len = strlen(arr); // printf("%dn", len); // return 0; //} //strlen 是求字符串长度的 //my_strlen // 1.const //2.assert //3. //健壮性 //鲁棒性 // //#include //int my_strlen(const char* str) //{ // assert(str != NULL); // //assert(str); // int count = 0; // while (str!=' ') // { // count++; // str++; // } // return count; //} //int main() //{ // char arr[] = "abcdef"; // int len = my_strlen(arr); // printf("%dn",len); // return 0; //} //#include size_t-unsigned int //size_t my_strlen(const char* str) //{ // assert(str != NULL); // //assert(str); // size_t count = 0; // while (str != ' ') // { // count++; // str++; // } // return count; //} //int main() //{ // char arr[] = "abcdef"; // int len = my_strlen(arr); // printf("%dn", len); // return 0; //} //编程常见错误 //分类 // //编译型错误-语法错误,双击错误查看,相对简单 // //链接型LNK错误-无法解析的外部符号 // 要么这个符号不存在 // 要么符号写错了 // //运行时错误 //借助调试,逐步定位问题,最难搞 //



