【问题标题】:invalid initializer for rand() when assigning to array分配给数组时 rand() 的初始值设定项无效
【发布时间】:2020-10-19 09:08:56
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
int main(){
    int n;
    for(int i= 0;i < 5; i++ ){
    //type arrayName[arraysize];
      int arrayName[5] = rand();
        printf("array[%d] = %d\n",i,arrayName[i]);
    }
    return 0;
}

我收到关于 rand() 的无效初始化程序的错误;如何向数组添加随机数并给它一个范围?

【问题讨论】:

    标签: arrays c random


    【解决方案1】:

    记住你不能用随机变量初始化一个数组,你必须逐项填充

    array[i] = rand();
    

    您只需要像这样更改定义变量的位置

    #include <stdio.h>
    #include <stdlib.h>
    int main(){
        int arrayName[5];
        int n;
        int i;
        for(i = 0;i < 5; i++ ){
            arrayName[i] = rand();
            printf("array[%d] = %d\n",i,arrayName[i]);
        }
        return 0;
    }
    

    这是一个用随机数填充数组的函数

    void generateFunction(int* arr, int len) {
        while (len-- > 0) {
            *arr++ = rand();
        }
    }
    

    或以简单的方式

    void generateFunction(int* arr, int len) {
        int i;
        for (i = 0; i < len; i++) {
            arr[i] = rand();
        }
    }
    

    【讨论】:

    • 更简单:for (int i = 0; i &lt; len; i++) 并删除 int i; alltogether
    • 我相信某些 C 编译器 (int i ...) 不支持并给你一个错误
    • 任何理智的 C 编译器都明白这一点。但确实,一些 20 年以上的 C 编译器可能看不懂。
    【解决方案2】:

    你在这里遗漏了两件事:

    1. 您尚未声明要使用的数组。像这样声明它:
    int arrayName[5];
    
    1. rand() 调用不返回整数数组,它只返回一个整数。所以你会想要替换这个:
    int arrayName[5] = rand();
    

    用这个:

    arrayName[i] = rand();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-19
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-28
      • 2021-10-29
      • 1970-01-01
      相关资源
      最近更新 更多