#include <bits/stdc++.h>
using namespace std;
// Function to copy one string in to other
// using recursion
void myCopy(char str1[], char str2[], int index = 0)
{
// copying each character from s1 to s2
s2[index] = s1[index];
// if string reach to end then stop
if (s1[index] == '\0')
return;
// increase character index by one
myCopy(s1, s2, index + 1);
}
// Driver function
int main()
{
char s1[100] = "GEEKSFORGEEKS";
char s2[100] = "";
myCopy(s1, s2);
cout << s2;
return 0;
}
我不明白s2的值是如何打印的......因为我们将s1和s2的地址传递给mycopy()函数。 mycopy()有两个本地数组str1和str2作为参数,所以我想是两个本地数组,其值为s1和s2将被创建。(按值调用)
该函数原型不应该是mycopy(char * s1,char * s2)用于打印s2。(通过引用调用)
答案 0 :(得分:0)
void myCopy(char&amp; str1 [],char&amp; str2 [],int index = 0)
答案 1 :(得分:-1)
为了能够重新初始化您的参数(在这种情况下为数组s2
),您需要通过引用传递。
像这样:
void myCopy(char &str1[], char &str2[], int index = 0)
这意味着myCopy()
将按原样使用数组,否则会创建它们的本地重复。