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;
}