从if语句返回数据

时间:2013-07-08 00:47:35

标签: c++ if-statement return

我正在if语句中处理数据,并希望将该数据保存为非语言环境变量,因此我可以在语句之外调用它。这是实际的代码。谨防;它几乎只是一个想法的弃儿,但我会欢迎任何和所有的想法或更好的解决方案(前提是这些建议对我目前的水平来说不是太高级)......

代码创建和多维char数组(2维),并填充它。当试图在之后调用它时,程序因达到未分配的数组值而崩溃。

       do
       {
        destRow = ( rand() % ROWS ) + 1; // assigning random placement for destroyer ship
        destCol = ( rand() % COLLUMS ) + 1;
        destDir = ( rand() % 2 ) + 1;

        if ( destDir == 1 ) { //Destroyer: 1 = right
            if ( destCol + 1 > COLLUMS ) {
                continue;
            } else {
                char enemyDestroyer[DESTROYER_SIZE][2] = { { board[destCol][0] , board[0][destRow] }, { board[destCol + 1][0] , board[0][destRow] } };
            }

        } else if ( destDir == 2 ) { //Destroyer: 2 = down
            if ( destRow + 1 > ROWS ) {
                continue;
            } else {
                char enemyDestroyer[DESTROYER_SIZE][2] = { { board[destCol][0] , board[0][destRow] }, { board[destCol][0] , board[0][destRow + 1] } };
            }
        }
        destSucces = true;
    } while (!destSucces);

这里它检查播放器输入(在其他一些点收集)与上面设置的数据,实际上没有设置为任何东西,因为赋值发生在if语句中

if ( ( input[0] == enemyDestroyer[0][0] && input[1] == enemyDestroyer[0][1] ) || (input[0] == enemyDestroyer[1][0] && input[1] == enemyDestroyer[1][1] ) ) {
    cout << "Hit!" << endl;
    board[posY][posX] = '!';
    getchar();

    //setting display damage
    if ( input[1] == enemyDestroyer[0][1] ) {
        enmDesDisp[0] = '!';
    } else if ( input[1] == enemyDestroyer[1][1] ) {
        enmDesDisp[1] = '!';
    }
} else {
    cout << endl << "Splash!" << endl;
}

1 个答案:

答案 0 :(得分:2)

目前尚不清楚您所引用的阵列。您在代码中与之交互的唯一数组是enemyDestroyer,它在分配后立即从内存中释放。

也许你可以扩展你的榜样,这样我们就可以更好地了解你正在尝试做什么?

<强>更新

为防止enemyDestroyer立即被释放,您必须将其移至适当的范围。这意味着将它宣布在与将要使用的范围相同的范围内。

我建议阅读范围,或者转向面向对象的设计。