首页 > 解决方案 > 当我们将一个 int 分配给一个由 2 个 int 组成的数组时会发生什么?

问题描述

以下代码通过选举中的每个选民,并允许他们按偏好对候选人进行排名:1、2、3 等。

该代码有效,但我只是想了解将一个 int 分配给ints,的二维数组时会发生什么preferences[voter][rank] = i

当您将单个 int 分配给ints 的二维数组时会发生什么?

// Keep querying for votes
    for (int i = 0; i < voter_count; i++)
    {

        // Query for each rank
        for (int j = 0; j < candidate_count; j++)
        {
            string name = get_string("Rank %i: ", j + 1);

            // Record vote, unless it's invalid
            if (!vote(i, j, name))
            {
                printf("Invalid vote.\n");
                return 4;
            }
        }

        printf("\n");
    }

//first loop through ranks gets input from the user... this loop through compares the users
//response to each of the candidates, then locks them in as that rank for that voter
bool vote(int voter, int rank, string name)
{
    for (int i = 0; i < candidate_count; i++)
    {
        if(strcmp(name, candidates[i].name) == 0)
        {
            preferences[voter][rank] = i;
            return true;
        }
    }
    return false;
}

标签: arrayscmultidimensional-array

解决方案


在您的代码中

 preferences[voter][rank] = i;

正如您所提到的,不会将 an 分配int给“s 的二维数组”。int

这里,preferences[voter][rank]是数组中的一个元素,类型为int,并且您正在为其分配一个整数值。

详细地说,一个数组定义为

 int arrayofints[10] = {0};

有 10 个元素,类型为int,由 访问arrayofints[i],其中0 <= i <= 9. 所以像这样的声明

 for (int i = 0; i< 10; i++){
     arrayofints[i] = i;
  }

access arrayofints[0], arrayofints[1].... 并将值存储i到该元素中。多维数组也是如此。


推荐阅读