在C中随机生成数组元素

时间:2013-10-22 20:27:23

标签: c arrays

我正在尝试使用数组生成一系列值。我将数组的少数元素设置为变量,将剩余的元素设置为常量。在下面的示例中,我将第一个元素设置为变量,然后使用for循环生成它的所有可能值。

然而,它不断重复使用与其初始化的 a 相同的值。如何在数组中生成一系列值?

#include <stdio.h>

int main(int argc, char **argv)
{
    int a = 0;
    int b = 0;
    int c = 0;
    int d = 0;
    char example[4]={a, 0x00, 0x00, 0x00};
    int i = 0;

    for(a = 0; a < 0x7f; a++)
    {
        for(i = 0; i < 4; i++)
        {
            printf("%x ",example[i]);
        }
        printf("\n");
    }
}

2 个答案:

答案 0 :(得分:4)

如果要继续更改a的值,则需要在数组中手动​​更改它(或使用指针)。以下是手动更改的代码:

for(a=0;a<0x7f;a++)
{   
    example[0] = a;

    for(i=0;i<4;i++)
    {
        printf("%x ",example[i]);
    }
    printf("\n");
}

否则数组会保存您最初设置它的内容。在c中,赋值将当前值复制到新变量中,它不会设置引用或指向赋值的链接。要创建一个随原始变量更改而不断更改的引用,您需要使用指向a的指针。

答案 1 :(得分:2)

除非我误解你的代码,否则它会打印一系列零(这是你数组中唯一的数据)。您的example数组在循环之前已初始化,因此更改循环中a的值不会影响数组的内容。