理解C ++中的指针

Understanding pointers in C++

本问题已经有最佳答案,请猛点这里访问。

我从来没有完全理解指针。我写这个小21点游戏是为了好玩,在我的研究方面,我需要确认,这种使用指针是合法的,所以我可以完全理解他们做什么。

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

1
2
3
4
5
6
7
8
9
10
11
12
void dealcard(int hand){
    hand+=rand()%10+2;
 }

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

如果我是正确的,那么上面的内容就不能按我的意愿工作了,因为函数使用了一个在将变量应用到原始变量之前被清除的变量的副本,而hand永远不会被更改。

如果我把它改成

1
2
3
     int b;
     int *hand;
     hand=&b;

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

我真的很努力地去理解指针,我会感谢任何有关这方面的帮助或确认,这样我就能理解它们的基本用途。


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

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

C++有一个很好的东西叫做引用,这意味着你不再需要执行C所要求的寻址体操。你可以这样写你的函数:

1
2
3
4
5
6
void dealcard (int &hand) {
    hand += rand() % 10 + 2;
}
:
int hand = 0;
dealcard (hand);

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

1
int()main{

我怀疑你的意思是:

1
int main() {