这是我的功能,我相信(我仍然习惯于使用指针)返回一个指向名为cords
的数组的第一个元素的指针:
int* getPosition( char arr[][5], char letter ) {
int cords[2];
for ( int y = 0; y < 5; y++ ) {
for ( int x = 0; x < 5; x++ ) {
if ( arr[y][x] == letter ) {
cords[0] = x;
cords[1] = y;
}
}
}
return cords;
}
这是我的第二个功能:
string scrambling( char arr[][5], vector<string> *pairs ) {
string encrypted;
int firstCords[2];
...
}
我想以某种方式将数组“cords”中的值从函数getPosition
分配给函数firstCords
中的数组scrambling()
。
我的临时解决方案是:
firstCords[0] = getPosition( arr, (*pairs)[i][0] )[0];
firstCords[1] = getPosition( arr, (*pairs)[i][0] )[1];
这是我提出的唯一可行的解决方案。我真的很想知道一种方法,我怎么能在一条线上实现这个目标呢?
答案 0 :(得分:1)
cords
是一个局部变量,因此在函数结尾之后使用它是未定义的行为。
一种简单的方法是将指向firstCords
的指针传递给getPosition
,然后让getPosition
填入。按照以下方式声明getPosition
:
void getPosition(int cords[2], char arr[][5], char letter);
并在scrambling
:
getPosition(firstCords, arr, (*pairs)[i][0]);
注意 int cords[2]
作为getPosition
的形式参数不是数组,而是指针。
Linus Torvalds在Linux内核邮件列表上发布的Here是一个很好的(好吧,取决于你如何定义)关于一些犯了类似错误的程序员。