使用调式技巧2
常见的coding技巧
1.使用assert
2尽量使用const
3.养成良好的编码风格
4.添加必要的注释
5.避免编码的陷阱
调试以下程序,分析代码
//#include <assert.h>
char* my_strcpy(char* dest, char* src)
{
char* ret = dest;
//断言
assert(dest != NULL);
assert(src != NULL);
while (*src!='\0')
{
*dest = *src;
dest++;
src++;
}
*dest = *src;//\0的拷贝
return ret;
}
int main()
{
char arr1[] = "hello world";
char arr2[20] = "###############";
//char* p = NULL;
my_strcpy(arr2, arr1);
printf("%s\n",arr2);
//printf("%s\n", my_strcpy(arr2, arr1));
return 0;
}
const修饰指针
int main()
{
//int num = 10;
//num = 20;
//int* p = #
//*p = 200;
const int n = 100;
//n = 200;//err
//const int* p = &n;
//*p = 20;
printf("%d\n", n);
return 0;
}
int main()
{
int m = 120;
//const可以修饰指针
//int* p = &m;
const int* p = &m;
//*p = 0;
p = &m;
printf("%d\n", m);
return 0;
}
当const放在的左边的时候,限制的是指针指向的内容,不能通过指针变量改变指针指向的内容,但是指针变量的本身是可以改变的
当const放在的右边的时候,限制的是指针变量本身,指针变量的本身是不能改变的,但是指针指向的内容是可以改变的
编程常见的错误
1.编译型错误
2.链接型错误
3.运行时错误
分析以下程序
int main()
{
i--;
// int size_t
//size_t size_t
if (i > sizeof(i))
{
printf(">\n");
}
else
{
printf("<\n");
}
return 0;
}
发生算数转换 ,打印<,而不是打印>