char a []和char * a之间的区别?

时间:2018-03-16 21:36:33

标签: c++

#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。(通过引用调用)

2 个答案:

答案 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()将按原样使用数组,否则会创建它们的本地重复。