Mus*_*tal 2 c random pointers for-loop
我想生成x个随机数,一切正常,除了它给出了序列号,而不是随机数.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int x;
printf("How many elements do you want?\n");
scanf("%d", &x);
int *array = (int *)malloc(x * sizeof(int));
srand(time(NULL));
for(int y = 0; y < x; y++){
*(array + y) = 2 + rand() % 99;
}
for(int y = 0; y <x; y++){
printf("Array element %d: %d\n", y, (*array+ y));
}
return 0;}
Run Code Online (Sandbox Code Playgroud)
它给出的数字如:27 28 29 30 31,每次执行中只有第一个数字是随机的,其他数字是连续的.
很可能你打印的是错误的值.
您需要更改(*array+ y)为*(array+ y)in printf()语句,否则,您最终会打印第一个随机数的值,再加上迭代计数器(这解释了您得到的输出).
只是添加一些自以为是的观点:数组索引操作符[]在那里,有些人选择使用它来避免错误就像这样.你的陈述可以很容易地重写,以便利用它
for(int y = 0; y < x; y++){
array[y] = 2 + rand() % 99;
}
for(int y = 0; y <x; y++){
printf("Array element %d: %d\n", y, array[y]);
}
Run Code Online (Sandbox Code Playgroud)
那说,
NULL 返回了malloc()调用,否则可能会导致解除引用NULL,从而调用未定义的行为