0

我从来没有完全理解过指针。我写这个极简的二十一点游戏是为了学习的乐趣,我需要确认指针的这种使用是合法的,这样我才能完全理解它们的作用。

目前这是我正在使用的程序和功能的一个示例:

void dealcard(int hand){
    hand+=rand()%10+2;
 }

int()main{
   int playerHand;
   ...
   *blackjack stuff*
   ...
   if(hit){
      deal(hand);
        }

现在,如果我是正确的,上述内容将无法按我的预期工作,因为该函数使用变量的副本,该副本在应用于原始变量之前已被清除,并且hand永远不会被更改。

如果我把它改成类似

     int b;
     int *hand;
     hand=&b;

并将函数声明更改为包含*, 那么这是正确的。

我真的很努力地理解指针,我很感激任何帮助或确认,这样我才能理解它们的基本用处。

4

1 回答 1

2

那是正确的。它也将是 C 而不是 C++ :-) 在这种情况下你会这样做的方式是:

void dealcard (int *pHand) {
    *pHand += rand() % 10 + 2;
}
:
int hand = 0;
dealcard (&hand);

C++ 有一个称为引用的漂亮东西,这意味着您不再需要执行 C 所需的那种寻址体操。您可以这样编写函数:

void dealcard (int &hand) {
    hand += rand() % 10 + 2;
}
:
int hand = 0;
dealcard (hand);

而且,顺便说一句,与您的问题并不真正相关:

int()main{

不是可接受的签名之一main,我怀疑您的意思是:

int main() {
于 2013-09-11T01:54:40.767 回答