将字符数组传递给函数

时间:2014-09-24 04:18:57

标签: c++

void PrintPosition (int *,int *,char* arrayLine);

这是我在main()之前的原型函数。

char arrayLine[71]="----------------------------------------------------------------------";
PrintPosition (&Tortoise,&Hare,&arrayLine[]);

这是我的int main(),我希望将arrayLine [71]传递给名为PrintPosition的函数。

 void PrintPosition (int *Tortoise, int *Hare, char *arrayLine)
    {
    char arrayLine[71]="----------------------------------------------------------------------";

    if(*Tortoise==*Hare)
    {
        arrayLine[*Tortoise+0]='O';
        arrayLine[*Tortoise+1]='U';
        arrayLine[*Tortoise+2]='C';
        arrayLine[*Tortoise+3]='H';
    }
    else 
    {
        arrayLine[*Tortoise]='T';
        arrayLine[*Hare]='H';

    }

    cout<<arrayLine<<endl;



}

这显然根本不编译。

我打算在这里做的是将大小为71的整个字符数组传递给函数,然后在函数处操作char数组。

我之所以这样做是因为我得到了堆栈帧错误,缓冲区溢出错误,变量'arrayLine'周围的堆栈错误。 &lt; ---当我在函数中声明arrayLine [71]而不通过它时。

所以问题是,按照我的意图传递整个阵列的可能方法是什么?

1 个答案:

答案 0 :(得分:0)

将数组传递给函数的方法是:

PrintPosition (&Tortoise,&Hare,arrayLine);

这是通过指针传递(语法稍有混乱)。无法按值传递C样式数组。

要按值传递数组,您必须使用不同类型的数组,例如std::array。不鼓励在C ++中使用C风格的数组,因为它们的行为不像值。

当然,您应该删除arrayLinePrintPosition的定义。