#include<stdio.h> #include<assert.h> //F5-启动调试和F9设置断点配合使用//先f9打断点,然后f5无论多远处直接到f9 //F10诸过程, //F11诸语句 shift+F11直接跳出循环 //shift f9快速调试 //调试 窗口 自动窗口 //内存数组名就是首元素地址 数组名 //调试窗口还有寄存器,反汇编 调用堆栈: //工具选项环境字体和颜色,调用堆栈窗口可调节字体 //函数调用时可以查看调用堆栈 //断点条件可以直接输入i=3;然后F5调节 char* my_strcpy(chardest, const charsrc)//10分版本 //const 常变量,此时src值不能被改变 变量加 //void my_strcpy(chardest, charsrc) { //if (dest != NULL && src != NULL)//传参时应该这样检测一下,防止崩溃 // //但不容易发现问题 //{ // //while (*src != '\0') // while (*dest++ = *src++)//最离谱的做法 // { // //*dest = *src; // //src++; // //dest++; // //*dest++ = *src++;//这样也行 // } // *dest = src; char ret = dest;//要返回1个首元素的地址才有意义 assert(dest != NULL);//断言,8分版本 assert(src != NULL); while (*dest++ = *src++)//最离谱的做法 { //*dest = *src; //src++; //dest++; //*dest++ = *src++;//这样也行 } //*dest = *src; //return dest;//返回一个数组末端的地址没有意义 return ret;//此时虽然ret被改,但首元素的地址没有变 }
my_strlen(const char*str)//1 { int count = 0; assert(str != NULL);//保证指针有效性//2 while (str != '\0') { count++; str++; } return count; }
int main() { //int i = 0; //int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; //for (i = 0; i <= 12; i++) //{ // printf("hehe\n"); // arr[i]=0; //} //system("pause");
}