C语言程序设计(初识C语言后部分)

夜暗方显万颗星,灯明始见一缕尘。

5.如何写出好(易于调试)的代码

1)优秀的代码:

·代码运行正常

·bug很少

·效率高

·可读性高

·可维护性高

·注释清晰

·文档齐全

常见的coding(编程)技巧:

·使用assert

·尽量使用const

·养成良好的编码风格

·添加必要的注释

·避免编码的陷阱

2)示范:

模拟实现库函数:strcpy

(1)先了解strcpy的作用(功能)

·strcpy在拷贝字符串的时候,会把源字符串中的\0也拷贝过去

(2)实现strcpy

#include <stdio.h>
//模拟实现库函数:strcpy
void my_strcpy(char* dest,const char* src)
{
	while (*src != '\0')
	{
		*dest = *src;
		dest++;
		src++;
	}
	//把\0拷贝过来
	*dest = *src;
}

int main()
{
	char arr1[20] = "xxxxxxxxxxxxx";
	char arr2[] = "hello world";

	my_strcpy(arr1, arr2);
	printf("%s\n", arr1);

	return 0;
}

(3)改进版本

#include <stdio.h>
void my_strcpy(char* dest, const char* src)
{
	while (*dest++=*src++)//当赋值到\0(假)后退出循环
	{
		;
	}
}

int main()
{
	char arr1[20] = "xxxxxxxxxxxxx";
	char arr2[] = "hello world";

	my_strcpy(arr1, arr2);
	printf("%s\n", arr1);

	return 0;
}

如果源数据穿的是NULL,那么就不能使用,这里可以加上assert(断言)来判断

#include <stdio.h>
#include <assert.h>
void my_strcpy(char* dest, const char* src)
{
	//断言,头文件<assert.h>
	assert(src != NULL);
	while (*dest++=*src++)//当赋值到\0(假)后退出循环
	{
		;
	}
}

int main()
{
	char arr1[20] = "xxxxxxxxxxxxx";
	char arr2[] = "hello world";
	char* p = NULL;

	my_strcpy(arr1, p);
	printf("%s\n", arr1);

	return 0;
}

(在55行报错)

源数据传参的时候,在其前加上const的作用是:while循环内两个解引用的数据写反了时,编译器能够及时报错提醒

那么const的意思是什么?

·const修饰的时常变量,不可以改

但是有种情况可以改:

不想改的话,就在指针前面加const

const修饰指针变量:

·const放在*左边

(const int* p = &num;等价于int const* p = &num; )-->意思是p指向的对象不能通过p来改变,但是p变量本身的值是可以改变的

·const放在*的右边

(int* const p = &num;)-->意思是p指向的对象是可以通过p来改变的,但是不能修改p变量本身的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值