天天看点

游戏筑基开发之指针的练习掌握C语言指针的相关注意点使用指针重写strcpy、strcmp、strcat、strlen的C源码

C语言指针的相关注意点

①数组名就是首地址(或是数组名[0]),且是一个不可修改的指针变量。

②附代码如下(C语言标准默认规则)

char* p1, p2;
	printf("%d %d\n", sizeof(p1), sizeof(p2));
	//注意!!!
	//sizeof(p1) = 4,sizeof(p2) = 1。
	//即char (*p1),p2;
           

使用指针重写strcpy、strcmp、strcat、strlen的C源码

细节部分暂未考虑,没有经过大量测试数据测试,仅提供思路,同时代码待优化。

//strcpy
static void strcpy(char *dest, char *sour)
{
	if (dest == NULL || sour == NULL)return;
	while (*sour != '\0')*(dest++) = *(sour++);
}

//strcat
static void strcat(char *arr1, char *arr2)
{
	if (arr1 == NULL || arr2 == NULL)return;
	while (*arr1 != '\0') ++arr1;
	while (*arr2 != '\0')*(arr1++) = *(arr2++);
}

//strlen
static int strlen(char *arr)
{
	if (arr == NULL)return;
	int count = 0;
	while (*(arr++) != '\0')++count;
	return count;
}

//strcmp
static int strcmp(char *arr1, char *arr2)
{
	if (arr1 == NULL || arr2 == NULL)return;
	while (*arr1 == *arr2)
	{
		if (*arr1 == '\0')return 0;
		else
		{
			++arr1;
			++arr2;
		}
	}
	if (*arr1 > *arr2)return 1;
	else if (*arr1 < *arr2)return -1;
}
           

继续阅读