You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不使用vector的情况下动态创建并填充指定大小的随机数数组?

不用vector实现动态大小随机数组的方案

先指出你现有代码的几个关键问题:

  • 第一段代码里未定义数组A,且循环条件i < size + 1会导致数组越界(数组合法下标范围是0到size-1);另外srand(time(0))放在循环内会每次重置随机种子,导致生成的所有随机数完全相同。
  • 第二段函数里的int A[n]是C99的变长数组特性,不属于C++标准规范,而且返回局部数组的地址完全无效——局部变量在函数执行结束后会被销毁,返回的指针会变成野指针。

正确实现方式:动态内存分配

在不使用vector的前提下,必须通过动态内存分配创建大小由用户输入决定的数组。C++环境用new[]/delete[],C环境用malloc/free,以下是具体实现:

C++ 版本

#include <iostream>
#include <cstdlib>
#include <ctime>

// 生成指定大小的随机数数组,返回数组指针
int* generateRandArray(int size) {
    // 动态分配内存
    int* arr = new int[size];
    for (int i = 0; i < size; ++i) {
        // 生成0到size-1之间的随机数
        arr[i] = rand() % size;
    }
    return arr;
}

int main() {
    int size;
    std::cout << "What is the array size? ";
    std::cin >> size;

    // 随机种子只初始化一次,放在程序开头
    srand(time(0));

    int* A = generateRandArray(size);

    // 示例:打印数组前5个元素
    std::cout << "First 5 elements: ";
    for (int i = 0; i < std::min(5, size); ++i) {
        std::cout << A[i] << " ";
    }
    std::cout << std::endl;

    // 必须释放动态分配的内存,避免内存泄漏
    delete[] A;
    return 0;
}

C 版本

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int* generateRandArray(int size) {
    int* arr = (int*)malloc(size * sizeof(int));
    if (arr == NULL) { // 检查内存分配是否成功
        printf("Memory allocation failed!\n");
        exit(1);
    }
    for (int i = 0; i < size; ++i) {
        arr[i] = rand() % size;
    }
    return arr;
}

int main() {
    int size;
    printf("What is the array size? ");
    scanf("%d", &size);

    srand(time(0));

    int* A = generateRandArray(size);

    // 示例:打印数组前5个元素
    printf("First 5 elements: ");
    for (int i = 0; i < (size < 5 ? size : 5); ++i) {
        printf("%d ", A[i]);
    }
    printf("\n");

    free(A); // 释放内存
    return 0;
}

关键注意事项

  • 随机种子初始化:srand(time(0))只需要调用一次,放在程序启动阶段即可,多次调用会导致随机数重复。
  • 内存释放:动态分配的数组必须在使用完毕后用delete[](C++)或free(C)释放,否则会造成内存泄漏。
  • 越界检查:遍历数组时,下标必须控制在0到size-1范围内,禁止越界访问。

内容的提问来源于stack exchange,提问作者Clinton Zimmerman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 12:10:28