gpt4 book ai didi

c - 如何在 C 语言的 for 循环中递增变量名?

转载 作者:行者123 更新时间:2023-11-30 21:47:36 25 4
gpt4 key购买 nike

如何在 C 循环中递增变量名?例如,我有一个变量 K1,每次循环到 K2、K3、K4 等时,我想将名称加一。我无法使用数组,因为我有大约 1000 个变量需要循环。

更新:我应该澄清一下,我正在对微 Controller 进行编程,并且板上的空间非常有限。我希望循环的变量名是结构体,每个 8 个字节长。因此,要创建一个由我之前创建的结构组成的数组,我必须写出一个包含 1000 个数组名称的数组?当然有办法增加名称吗?我稍后会发布我的代码。

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>

typedef struct reg0 {
int address;
union {
struct {
unsigned int bitfield1 : 1;
unsigned int bitfield2 : 4;
unsigned int bitfield3 : 2;
unsigned int bitfield4 : 1;
};
uint8 DATA;
};
} Reg0;

//Beneath this I have 1000 similar Register structures, each unique


int main()
{
//Beneath this I have 1000 similar initializations, each unique
Reg0 R0 = {.address = 0x0, {{.bitfield1=0x1,.bitfield1=0x6,.bitfield3=0x2,.bitfield4=0x1}}};

for(i=0;i<=1000;i++){
//Here I'd like to print each address field of each structure to the screen
printf("Address of Reg%d is: %?", i, Ri);
}

return 0;

}

最佳答案

你不能通过变量名来做到这一点;名称是人类的名称,在运行时不再存在。

对其进行建模的正确方法是使用数组。所以替换这个:

int K1, K2, K3, K4, ... K1000;

与:

int K[1000];

然后使用循环索引访问数组:

for(size_t i = 0; i < sizeof K / sizeof *K; ++i)
K[i]++;

如果您真的无法将变量平铺到数组中,您可以添加间接寻址并拥有一个指针数组,但初始化会很糟糕:

int K1, K2, K3, ... K1000;
int *K[1000] = { &K1, &K2, &K3, ..., &K1000 };

然后你可以再次使用循环:

for(size_t i = 0; i < sizeof K / sizeof *K; ++i)
(*K[i])++;

注意:上面的 ... 只是答案中的符号,不是 C 语法。您应该在那里输入更多内容。

关于c - 如何在 C 语言的 for 循环中递增变量名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30322053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com