【问题标题】:function should take two arguments , an array and the size of the array函数应该有两个参数,一个数组和数组的大小
【发布时间】:2015-08-17 16:22:59
【问题描述】:

我需要以下帮助:

定义一个函数,返回最小城市的人口 (人口方面)在一系列城市中。该功能应采取两个 arguments:一个城市数组和数组的长度。

这是我的代码:

struct city
{

char name[20];
int pop;

};

 int func1(struct city cities[], int i) // these are the arguments

{

    for(i=0; i<2; i++)
    {
        cities[i].pop;
    }

    cities[0].pop=2500;
    cities[1].pop=3000;

    return cities[0].pop;
}

我只是想让它工作,但它不会编译并且不会给出错误以太。

【问题讨论】:

  • 即使使用您的代码,您的问题也不清楚。 for 循环有什么用?
  • 第一行覆盖 i。我的行为不像一个论点
  • 该循环的主体没有副作用,因此可以对其进行优化
  • 如果它没有编译,编译器会告诉你为什么它没有编译。我建议您学习如何阅读编译器消息,因为如果您打算继续 C 开发,这将非常有帮助。
  • 您好!我只是尝试使用在线编译器编译您的代码,它工作正常。在我添加主要功能之后。您确定在尝试编译时没有错误消息吗?

标签: c function struct


【解决方案1】:

您的代码中几乎没有错误。 例如,您无法通过在数组中循环来找到数组大小。它仅适用于“字符串”,因为它们有一个结束字符 '\0'。

数组的大小,正如你所提到的,是通过函数的第二个参数传递的。

所以你想做的是,我想:

int func1(struct city cities[], size_t i) // these are the arguments
{
    if (i == 0)
        return 0;
    int min = cities[0].pop;
    for(size_t j=1; j < i; ++j)
    {
        min = cities[i].pop < min ? cities[i].pop : min;
    }
    return min;
}

问候。

【讨论】:

  • 如果我的答案是您所期望的,您可以验证它,否则更准确地告诉我们您想要什么。问候
  • 注意:最好使用size_t i,j 和返回值而不是int i
  • 我对函数进行了更改。起初,我使用 int 来对应他给出的函数的签名,但你是对的 size_t 是更好的选择。
  • 注意:哎呀,我建议将返回值设为size_t,因为它的功能是“返回最小城市的人口”。 OTOH,而不是返回索引(类型为size_t)很有用,因此可以轻松确定最小城市的人口和名称
猜你喜欢
  • 1970-01-01
  • 2017-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-23
  • 1970-01-01
  • 1970-01-01
  • 2021-04-23
相关资源
最近更新 更多