//用自己的代码实现strcopy //想知道这个函数怎么用 //为什么参数表那里放的是两个指针 //这个函数不是数组版本吗?

#include <stdio.h>;
int mycpy(char* dst,const char* src)
{
    int idx = 0;
    while (src[idx] != '\0')
    {
        dst[idx] = src[idx];
        idx++;

    }
    dst[idx] = '\0';
    return dst;
}

//用自己的代码实现strcopy
//想知道这个函数怎么用
//为什么参数表那里放的是两个指针
//这个函数不是数组版本吗?

#include <stdio.h>

int mycpy(char *dst, const char *src) {
  int idx = 0;
  while (src[idx] != '\0') {
    dst[idx] = src[idx];
    idx++;
  }
  dst[idx] = '\0';
  return idx;
}

int main()
{
    char a[] = "abcdefg";
    char b[32];
    mycpy(b, a); // 这里数组会自动退化成char *类型指针
    printf("%s\n", b);
    return 0;
}

指针和数组在参数上是一样的,都是作为指针类型传递的。所以没啥问题
调用函数的例子:
char a[] = "hello";
char b[10] = {0};
mycpy(b,a);
mycpy函数的返回值应该改为int*类型

因为你要实现的功能是直接改变dst的内容,而不是以src和dst两个数组合并之后生成新数组再return回来
那么如果dst不是指针,你就没法直接操作dst了呀
src当然可以声明为数组,但是既然dst是指针,src也是指针不好吗,这样访问方式就一致了呀,不用额外处理
至于这个函数怎么用,你代码都写好了自己不会用吗
你要先建立两个字符串类型的变量,然后传入函数
mycpy(a,b),就是把b的内容复制给a
返回值是a的首地址

可以用数组形式的,数组和指针,在访问的时候是打通的
可以看这篇博客了解一下https://blog.csdn.net/m0_64212811/article/details/126200617

img