【问题标题】:Returning data from if statement从 if 语句返回数据
【发布时间】:2013-07-05 06:22:41
【问题描述】:

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

代码创建多维字符数组(二维),并填充它。之后尝试调用它时,程序由于达到未分配的数组值而崩溃。

       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;
}

【问题讨论】:

  • 请用您使用的语言标记您的问题。

标签: c++ if-statement return


【解决方案1】:

不清楚您指的是哪个数组。您在代码中与之交互的唯一数组是enemyDestroyer,它在赋值后立即从内存中释放。

也许您可以扩展您的示例,以便我们更好地了解您想要做什么?

更新

为了防止enemyDestroyer 被立即释放,你必须将它移动到适当的范围。这意味着在将要使用的范围内声明它。

我建议阅读范围,并可能切换到面向对象的设计。

【讨论】:

  • 好吧...如果你添加“cout
  • 问题是,我不希望它从内存中释放出来,我希望它以及在 if 语句中分配给它的值在整个程序的其余部分中都可用。
猜你喜欢
  • 2017-07-27
  • 2015-12-14
  • 1970-01-01
  • 1970-01-01
  • 2018-05-07
  • 2021-08-31
  • 2015-07-28
  • 2013-12-04
  • 2018-04-18
相关资源
最近更新 更多