使用指向数组的指针填充数组

时间:2016-03-01 01:15:54

标签: c arrays pointers

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

#define SIZE 20
#define MIN 0
#define MAX 100

void FillArray(int *array, int size);
void PrintArray(int *array, int size);
void BubbleSort(int *array, int size);
void SelectionSort(int *array, int size);
void Swap(int *x, int *y);

int main() {
    int NumList[SIZE];
    int *array;
    array = NumList;
    FillArray(array, SIZE);
    PrintArray(array, SIZE);
}

void FillArray(int *array, int size) {
    int i;
    srand(time(NULL));
    for (i = 0; i < size; i++);  //<--- the K&R brace style would make this bug obvious!
    {
        *(array+i) = MIN + rand() % (MAX - MIN + 1);
    }
}

void PrintArray(int *array, int size) {
    int i;
    for (i = 0; i < size; i++) {
        printf ("%d\n", array);
        array++;
    }
}

这个程序似乎是按递增顺序输出随机整数(不是最小值和最大值),我想知道它为什么不是随机的。 具体在FillArray函数中。它似乎没有正确填写。

1 个答案:

答案 0 :(得分:0)

你没有这个循环的身体

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

结束时,下一行

*(array+i) =  MIN + rand() % (MAX - MIN + 1);

在数组范围之外写入。

删除分号......

for (i=0; i<size; i++)    // ---> ;

还有

的问题
printf ("%d\n", array);

应该是

printf ("%d\n", *array);