将数组传递给函数,然后在main函数中打印该数组

  • 本文关键字:函数 数组 main 打印 然后 c
  • 更新时间 :
  • 英文 :


写一个掷骰子游戏。游戏应该允许玩家一次掷6个骰子。每抛一次Die将被存储在一个六元素整数数组中。该数组将在main()函数中创建,但要传递到一个名为tossDie()的新函数。tossDie()函数将负责生成随机数从1到6,并将它们赋给相应的数组元素号。掷完骰子后,main()函数应该显示骰子的生成值。

以上就是我的问题。

我在tossDie函数中使用数组,但是当tossDie函数中的数组被打印时。数组中的元素多于6个,我无法控制元素也不是1到6之间的随机数。这是我的方法:

#include <iostream>
#include <time.h>
#include <stdlib.h>
int tossDie(int [], int);
int main() {
srand(time(0));
int a[6]= {''};
int size = 6;
tossDie(a, size);
// printf("The dice results:  n%d", a);
}
int tossDie(int dice[6], int size){
srand(time(0));
int i =0;
for (i =0; i<=6 ; i++){
dice[i] = 1 + rand()%(6);
printf(" %d", dice);
}

return 0;
}

主声明:

你的代码可以受益于一个整体的批评,所以让我们从主声明开始。该标准明确规定:

It [main]定义的返回类型为int,不带形参。

int main()

int main(void)

第一个接受任意数量的参数,第二个不接受。

神奇数字:

您在代码中使用了神奇数字6,5次。考虑使用定义预处理器:

#define MAX 6

更容易更改和维护。你不会喜欢在十几个地方改6,而不是只改一个。

零字节:

将空字节''替换为0

大小:

C语言中确定数组大小的常用习惯是:

size_t size = sizeof (a) / sizeof (a[0]);

其中sizeof(a)为总字节数,sizeof(a[0])为单个元素的大小。

但是,当您已经在define语句中定义了大小时,您将不需要计算大小。

随机数生成器:

种子应该只设置一次。这个问题的答案是()-为什么只调用一次?详细解释一下。

访问非法内存

for (i = 0; i <= 6; i++)

访问数组边界之外的内存,这是非法的。不应该读取未分配的内存。

数组索引从0开始而不是从1开始。因此,数组的第六个元素位于索引位置5。

原始问题:

可以在main函数中使用for循环,在处理完所有错误后打印数组的所有值。

考虑将函数的返回类型更改为void,因为在修改数组时不需要将数组返回给main。数组在函数形参中衰减为指针,因此它更像是一个别名。它们都指向同一个内存,如果你通过一个或另一个修改内存,内存将被同时修改。

p。S:如果你有不清楚的地方,你可以要求澄清。

最新更新