C语言 在数组的最后一个内存位置随机生成高整数

xhv8bpkk  于 2022-12-17  发布在  其他
关注(0)|答案(1)|浏览(119)

我用随机数填充了一个随机大小的数组。随机数的值不应该大于1000。大多数情况下它工作正常,但偶尔当我运行程序时,最后一个内存位置会显示一个大于1000的数字。我做错了什么?我缺少某种NULL终止符?我是新手级别。

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

#define Random(high, low) (rand() % (high - low)) + low
int * GetArray(int);

int main()
{
    srand(time(NULL)); 
    int num = Random(15, 5);
    GetArray(num);

    return 0;
}

int * GetArray(int size){
    int* ptr = (int*)malloc(size * sizeof(int));
    for(int x = 0;x < size;x++){
        ptr[x] = Random(1000,1);
        }
    printf(" Forward: ");
    for (int x=0; x<=size; x++){
        printf("a[%d]=%d  ",x, ptr[x]);
    }
    printf("\r\nBackward: ");
    for (int x=size; x >=0 ; x--){
         printf("a[%d]=%d  ",x, ptr[x]);
    }
    return ptr;
}
agxfikkp

agxfikkp1#

假设数组的大小是5,那么第一位是0,第二位是1,第三位是2,第四位是3,第五位是4!
因此,您应该这样编写for循环:

for(int x = 0; x < size; x++)

还有

for(int x = size - 1; x >= 0; x--)

相关问题