0
点赞
收藏
分享

微信扫一扫

C语言学习之旅 练手小题目(一)

1.模拟实现strcpy

```c++
#include <stdio.h>
#include<assert.h>

char my_strcpy(char dest, const char src)
{
// 优化前
//while (
src != '\0')
//{
// dest = src;
// dest++;
// src++;
//}
// dest = src
// 进一步完善,防止传入空指针
assert(src != NULL);
assert(dest != NULL);
char ret = dest
//优化后
while (
dest++ = *src++)
{
;
}
return ret
}

int main()
{
char arr1[20] = "**";
char arr2[] = "hello";
printf("%s", my_strcpy(arr1, NULL)); //链式访问
return 0;
}

> 注意:加入assert 方便错误定位;加入const防止传参错位

* const 补充
> const修饰变量,这个变量被称为常变量,不能被修改,但本质上还是变量
```c++

int main()
{
    const int num = 10; //无法直接修改变量
    const int* p = &num; //const放在*号左边无法通过一级地址修改,但是指针变量p可以修改
    int* const p = &num; //放在*号右边时,用来修饰指针变量,此时指针变量不能被改变
    int n = 100;
    *p = 20;
    p = &n;

    return 0;
}

2.模拟实现my_strlen函数

```c++
//模拟实现my_strlen函数
size_t my_strlen(const char arr)
{
assert(arr != NULL);
size_t count = 0;
while (
arr != '\0')
{
count++;
arr++;
}
return count;
}

int main()
{
char arr[10] = "abcdefg";
printf("%d\n", my_strlen(NULL));
return 0;
}

举报

相关推荐

0 条评论