c++ - 理解 C++ 中的指针

标签 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;

并更改函数声明以包含 *,这样就正确了。

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

最佳答案

那是对的。它也将是 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() {

关于c++ - 理解 C++ 中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18731460/

相关文章:

c++ - 对 [class::function] 的 undefined reference /对 [class] 的类型信息的 undefined reference

C 程序在 do while 循环中崩溃

c++ - 共享指针声明

c - 对指针没有影响的语句

c++ - Qt 未定义对 3rdparty 软件库的引用

c++ - msys2 和 header 在 'wrong' 位置

C++11 - pimpl-idiom 和 unique_ptr 的可能困境?

c++ - 使用 char 数组指针按引用调用

C++ 类型转换 : cast a pointer from void pointer to class pointer

c++ - 自定义内存管理器