代码之家  ›  专栏  ›  技术社区  ›  Yiannis

在声明数组时,是否可以在数组名称中包含循环计数器?(C中)

  •  0
  • Yiannis  · 技术社区  · 9 年前

    我有一个循环,它根据用户输入的值创建一定数量的数组。我希望在数组名称的末尾包含数组的计数器,使其为:array1[]、array2[]、array3[]等,每次迭代一个。这可能吗?我们刚开始在大学学习C,所以我还不太了解它。我尝试了以下方法:

    #include <stdio.h>
    
    int main(void)
    {
        //Variables
        int i, columns, column_size;
    
        //Read input
        printf("Input number of columns:\n");
        scanf("%d", &columns)
    
        //Loop to create arrays
        for (i=1; i<=columns; i=i+step)
        {
            //Read column size
            scanf("%d", &column_size);
    
            //Create an array of given size for this column
            int column+"i"+[column_size];
        }
    
        return 0;
    }
    

    enter image description here

    1 回复  |  直到 9 年前
        1
  •  5
  •   akira    9 年前

    我希望在数组名称的末尾包含数组的计数器,使其为: array1[] , array2[] , array3[] 依此类推,每次迭代一次

    这是不可能的。C是一种编译语言,意味着程序(编译器)在一个时间点创建程序,而程序在不同的时间点接收用户输入。

    即使“变量”的名称在编译后可能会消失,它们也不需要执行程序。

    int a;
    

    所有这一切都是为了告诉编译器,程序员需要32位空间来存储一些东西。如果以后想在那里存储一些东西,可以使用名称“a”:

    a = 42;
    

    编译器计算到RAM中当前位置的偏移量,并将“42”存储在该地址。在运行时,所使用的“名称”是完全不相关的,没有查找所涉及的正确位置。

    这就是Python这样的“解释语言”的区别。