C ++返回一个数组并将其赋值给变量

时间:2015-02-26 03:11:22

标签: c++ arrays pointers

所以我有一个功课问题,要求我编写一个带有字符数组,字符数组和int指针的函数。该函数应循环遍历字符数组,忽略第二个参数char的任何实例,并创建一个新数组,该数组由原始数组中的字符组成,而不是第二个参数char的实例。然后需要将原始长度参数更改为新长度,并返回新数组。我对C ++很陌生,所以指针是一个我还没有完全掌握的新概念。

char *Problem5(char chars[], char letter, int *length){
    int newLength=0;
    int counter=0;
    for(int i=0;i<*length;i++){
        if(chars[i]!=letter){
            newLength++;
        }
    }
    char newChars[newLength];
    for(int x=0;x<*length;x++){
        if(chars[x]!=letter){
            newChars[counter]=chars[x];
            counter++;
        }
    }
    *length=newLength;
    return newChars;
}

有我的功能,我知道算法工作正常但不会编译。

    char chars2[10] = {'g','g','c','g','a','g','g','g','t','g'};
    printArray(chars2,10);
    char *arrayPointer;
    arrayPointer = Problem5(chars2,'g',length1);
    printArray(arrayPointer,3);

这是我的主要功能部分,它被调用。我需要打印出结果数组,所以我尝试将它分配给一个指针,但是这一行:

arrayPointer = Problem5(chars2,'g',length1);

引发错误:从'char'到'char *'的转换无效我会非常感激一点点洞察力,因为我不知道我做错了什么。

1 个答案:

答案 0 :(得分:0)

您的算法看起来不错,您的代码看起来非常好。我对这一行持怀疑态度:

char newChars[newLength];

因为您无法在编译时使用可变大小分配数组。您发布的代码可能不是您尝试编译的代码吗?

将上面的行更改为

char *newChars = new char[newLength]; 

并且数组将在运行时动态分配。我无法理解为什么你会得到“从'char'到'char *'的无效转换”错误编译

arrayPointer = Problem5(chars2,'g',length1); 

根据您提供的定义。唯一具有类型“char *”的东西是问题5的第一个参数和返回值,并且那些看起来是您发布的正确类型。