我正在尝试使用数组生成一系列值。我将数组的少数元素设置为变量,将剩余的元素设置为常量。在下面的示例中,我将第一个元素设置为变量,然后使用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");
}
}
答案 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
的值不会影响数组的内容。