2013-09-11 71 views
0

我从来没有完全理解指针。我在学习方面写了这个有趣的21点游戏,我需要确认指针的这种使用是合法的,这样我才能完全理解他们做了什么。了解C++中的指针

目前是这样的程序和功能我使用的例子:

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; 

,改变了函数声明为包括*,那么这将是正确的。

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

+0

很多人问类似的问题之前,请阅读此页“相关”的问题:-) – tdihp

+0

你的人回答这个问题之前,肯定它是C++? //你的代码看起来比C++更像C。 – Mansueli

+0

抱歉有些混乱。我正在阅读一篇关于使用C作为例子而不是C++的指针的文章。如果这个问题是重复的,我也很抱歉,我意识到这里的社区正在努力保持网站的高标准 – gr33kbo1

回答

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() { 
+0

有趣。所以当作为函数的参数传递时,我会通过引用传递。谢谢。 – gr33kbo1

+0

@ gr33kbo1:如果这回答了你的问题,那么如果你[接受答案](http://stackoverflow.com/help/someone-answers)会很好。 – Blastfurnace