生成随机数并将值赋给指针时出现问题。
我想在这里做什么:生成1到1000之间的数字,玩家将获得该金额。 基本金显然是0。 虽然,出于某种原因,当我打印出整数金的数量时,有时它超过3000,这显然是错误的迹象。
黄金交易部分是因为玩家将多次收到黄金,我希望它每次都能运作。虽然目前,因为我正在测试我的程序的这一部分,所以玩家只收到一次金币。
由于我是初学程序员,我想我做错了。 我该如何正确地执行此操作,以便整数GOLD具有正确的值?
int* gold=0;
int* goldchange;
srand(time(0));
goldchange=gold;
gold=gold+rand()%1000+1;
goldchange=gold-goldchange;
printf("You have received the following amount of gold: %d", goldchange);
printf("You have this many golds: %d", gold);
所以,例如,这是上次发生的事情: 您收到了以下金额:777 你有这么多金牌:3108
但它应该是777而不是3108 .... (显然每次运行都会给出不同的数字,但这两个值永远不会相同......)
答案 0 :(得分:3)
您将变量声明为指针:
int* gold=0;
int* goldchange;
然后继续将它们视为常规int
变量。在给定的代码中,我认为没有理由将这些变量声明为指针。为什么不呢
int gold=0;
int goldchange;
答案 1 :(得分:2)
John Coleman提到gold
是一个指针,你需要为它分配内存。
int* gold=0;
int* goldchange = 0;
gold = malloc(sizeof(int));
if(0 == gold)
return;//Handle this case in your application.
goldchange = malloc(sizeof(int));
if(0 == goldchange)
return;//Handle this case in your application.
srand(time(0));
*goldchange = *gold;
*gold = *gold + rand()%1000+1;
*goldchange = *gold - *goldchange;
printf("You have received the following amount of gold: %d", *goldchange);
printf("You have this many golds: %d", *gold);