我永远不会完全理解指针。我正在编写这个极简的二十一点游戏,以便在学习方面获得乐趣,我需要确认这些指针的使用是合法的,这样我才能完全理解他们的所作所为。
目前这是我正在使用的程序和功能的一个例子:
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 :(得分: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() {