【问题标题】:C Student Assignment, Array Values Not Passing to FunctionC 学生作业,数组值未传递给函数
【发布时间】:2014-04-14 18:35:03
【问题描述】:

我在将数组传递给函数时遇到了问题。我将它传递给一个函数并更新它,然后在 main 中打印值,它们打印得很好。我将它们传递给另一个函数来评估它们,并且由于某种原因这些值没有成功。我已经尝试将它们作为 const char 和 const int 或只是作为 char 和 int 传递。他们仍然没有工作。

我的家庭作业落后了,我在这作业上束手无策。你能看出我做错了什么吗?我在 Ubuntu 上用 GCC 编译。正如我所说,main() 中的相同循环会产生正确的结果,并且我将数组传递给函数,其方式在早期设置值的函数中可以正常工作。

在 main() 中

evalGuesses(guessType, numberOfGuesses);

在 evalGuesses() 中

void evalGuesses(char guessType[], int numberOfGuesses)
{
int count;

for(count = 0; count < numberOfGuesses; count++);
{
    printf("\n** Eval: option %c", guessType[count]);
}
return;
} // end evalGuesses

【问题讨论】:

  • 请向我们展示你完整的 main() 函数...
  • 我怀疑您在未向我们展示的代码中存在问题。 ideone.com/msFDhW 给出了将数组传递给函数的示例。
  • 谢谢,朋友们,但是导致问题的原因是 for() 后面的分号。我感到很愚蠢,直到我意识到我的眼睛并不是唯一掩盖它的眼睛。从昨晚开始,我一直在努力寻找。 :-)

标签: c arrays


【解决方案1】:

去掉for 右括号后的分号;。您现在拥有的代码相当于以下代码:

...
for( count = 0; count < numberOfGuesses; count++ ){
    ;   // means "do nothing", empty-statement
}
{
    printf( ... );
}
...

虽然您似乎想让printf( ... ); 循环播放,但在这种情况下,您应该按照我一开始的建议进行操作。

【讨论】:

  • 哈哈!就是这样!谢谢,托阿佩尔辛!我应该抓住它,但我的眼睛只是掩盖了它。不知道它是如何到达那里的,但非常感谢你抓住它!
  • @DavidPetersonH​​arvey 没问题,兄弟。 补充:不过,这让我想知道在main 中为什么会出现同样的循环,哈哈
  • 我会补充一点,因为当你到达 printf() 计数时你没有在循环中做任何事情,它将索引一个元素超过你的数组末尾。因此,您在单个 printf() 中看到的垃圾。
  • 嗯,除了分号外,它是相同的循环。 :-)
猜你喜欢
  • 2018-11-14
  • 2012-02-10
  • 2013-06-26
  • 2014-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多