【问题标题】:How to accessing any variable name according to looping index in C [duplicate]如何根据C中的循环索引访问任何变量名[重复]
【发布时间】:2015-09-04 10:50:56
【问题描述】:

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

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

我知道这不是真的,但我不知道如何正确地做到这一点。请大家帮帮我。谢谢。

【问题讨论】:

  • 你是什么意思'我给他们命名'你用什么C指令'给他们命名n0 ...'?
  • 什么是数字? n 是什么?如果它们被正确定义,这段代码看起来很好。
  • 你要么在一个名为narray 中拥有全部 10 个,要么你不会循环......

标签: c loops variables


【解决方案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, ...,那么您唯一的选择是使用某种类型的listtree 构造来提供各个变量之间的关联(内存地点)。鉴于您的问题,这似乎远远超出了您所问的范围。可以这么说,如果你这样做了:

#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;
}

重新开始...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 2016-06-06
    • 2017-11-01
    相关资源
    最近更新 更多