关于#传递数组给函数#的问题,如何解决?

我认为该函数的形式参数是一个数组,实参s1传递的值是数组里的元素,由于函数类型为void,故函数运行结束后形参消失,不返回值,s1的元素不变,但程序运行结果却是s1的值改变了。
我的程序如下:
<#include <stdio.h>

void scat (char s1[], char s2[]) {
    int i = 0, j = 0;
    while (s1[i])
        i++;
    while (s2[j]) {
        s1[i]=s2[j]; 
        i++;
        j++;
    }
}

int main() {
    char s1[80], s2[80];
    gets(s1);
    gets(s2);
    scat(s1, s2);
    puts(s1);
 
 return 0;
}>
输入数据:12
123
预期结果:12 实际结果:12123

在C语言中,数组名实际上是一个指向该数组首元素的指针。因此,当我们将一个数组作为参数传递给函数时,实际上是将该数组的首地址传递给了函数。在函数内部对该数组进行修改时,实际上也是对这个指针所指向的内存区域进行了修改,从而影响了主函数中的数组。

s1 是数组啊,s1 传递给函数内,这就是传的数组的首地址,相当于传了个char型的指针 , 里面的修改肯定会影响的啊

你传递的 s1 是数组,是地址啊 传地址当然改变啊

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^