通过指向其第一个元素的指针将数组分配给数组

时间:2015-11-22 15:28:04

标签: c++ arrays pointers

这是我的功能,我相信(我仍然习惯于使用指针)返回一个指向名为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];

这是我提出的唯一可行的解​​决方案。我真的很想知道一种方法,我怎么能在一条线上实现这个目标呢?

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是一个很好的(好吧,取决于你如何定义)关于一些犯了类似错误的程序员。