理解C ++中的指针

时间:2013-09-11 01:51:28

标签: c++ pointers

我永远不会完全理解指针。我正在编写这个极简的二十一点游戏,以便在学习方面获得乐趣,我需要确认这些指针的使用是合法的,这样我才能完全理解他们的所作所为。

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

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;

并更改了函数声明以包含*,那就是正确的。

我真的很努力理解指针,我很感激任何帮助或确认,所以我可以理解它们的基本用途。

1 个答案:

答案 0 :(得分: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() {