gpt4 book ai didi

c - 如何根据C中的循环索引访问任意变量名

转载 作者:行者123 更新时间:2023-11-30 21:10:04 24 4
gpt4 key购买 nike

我有整数变量,我用 n0 到 n9 命名它们,我想使用循环访问它们,我尝试编写以下代码来做到这一点:

for(i = 0; i < 10; i++){
if(digit == 1){
n[i] = n[i] + 1;
}
}

我知道这不是真的,但我不知道该怎么做。请大家帮助我。谢谢。

最佳答案

有点难以理解你在问什么,但无论如何答案基本上是相同的。如果您想在数据结构中保存 n[0]n[9] 的值,以便可以循环访问这些值,那么立即的选择是 >array (您可以使用链表、树等,但我认为您不需要这些)。数组的优点是可以将所有值放置在连续的内存块中。这允许您以多种方式迭代(循环)这些值。示例:

#include <stdio.h>

#define MAX 10

void prnarray (int *a, int n);

int main (void) {

int i = 0;
int n[] = {0,1,2,3,4,5,6,7,8,9};

printf ("array before loop:\n\n");
prnarray (n, MAX);

for (i = 0; i < MAX; i++)
if (n[i] == 1)
n[i] += 1;

printf ("\narray after loop:\n\n");
prnarray (n, MAX);

return 0;
}

void prnarray (int *a, int n)
{
int i;

for (i = 0; i < n; i++)
printf (" array[%2d] : %d\n", i, a[i]);
}

输出

$ ./bin/array09
array before loop:

array[ 0] : 0
array[ 1] : 1
array[ 2] : 2
array[ 3] : 3
array[ 4] : 4
array[ 5] : 5
array[ 6] : 6
array[ 7] : 7
array[ 8] : 8
array[ 9] : 9

array after loop:

array[ 0] : 0
array[ 1] : 2
array[ 2] : 2
array[ 3] : 3
array[ 4] : 4
array[ 5] : 5
array[ 6] : 6
array[ 7] : 7
array[ 8] : 8
array[ 9] : 9

另一方面,如果您只是将值分配给各个变量n0、n1、n2、...,那么您唯一的选择就是使用某种类型的列表tree 构造以提供各个变量(内存位置)之间的关联。鉴于你的问题,这似乎远远超出了你所问的范围。只要说一下,如果您已经这样做了:

#include <stdio.h>

#define MAX 10

int main (void) {

int i = 0;
int n0 = 0;
int n1 = 1;
int n2 = 2;
int n3 = 3;
int n4 = 4;
int n5 = 5;
int n6 = 6;
int n7 = 7;
int n8 = 8;
int n9 = 9;

/* you are stuck - no way to loop,
no guarantee n0 - n9 are contiguous
in memory. (advanced datastruct needed)
*/

return 0;
}

重新开始...

关于c - 如何根据C中的循环索引访问任意变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32396723/

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