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]而不通过它时。
所以问题是,按照我的意图传递整个阵列的可能方法是什么?
答案 0 :(得分:0)
将数组传递给函数的方法是:
PrintPosition (&Tortoise,&Hare,arrayLine);
这是通过指针传递(语法稍有混乱)。无法按值传递C样式数组。
要按值传递数组,您必须使用不同类型的数组,例如std::array
。不鼓励在C ++中使用C风格的数组,因为它们的行为不像值。
当然,您应该删除arrayLine
中PrintPosition
的定义。