2017-02-10 65 views
0

我在练习中遇到了一些问题。这个程序的工作方式是用户输入数据集的数量,所以让我们说3,然后用户输入浮点数然后输入浮点数,然后按第二个和第三个数据集的输入。所以一个示例输入是。用户挑选什么样的数据来执行的操作后3
3 12.5 3.4 6.7
5 7.7 5.5 8.8 3.3 5.7
2 89.3 84.5使用Malloc分配数组的C指针?

假设数据:

输入数据集的数量2这是[5 7.7 5.5 8.8 3.3 5.7] 然后返回数字的最大值。

因为我们不知道什么样的数据集的数目,我们必须使用动态分配的数组,我在我的代码做了,有一个指针指向数组找到特定的数据集的最大。我想我需要两个数组来跟踪数据,一个跟踪数据集。这是我的代码。

Im在gettingData方法中遇到了问题我希望用户输入将 放在该数组中,但是当我打印指针指向的内容时,它返回0.0000,这是不准确的。

+0

请发送您用于测试的代码,或者我们可以做些事情。了解如何在标准的StackOverflow文档页面中提出问题。不做可能会触发“不是编程问题”标志,您的问题将被关闭。 –

回答

0

您似乎忘记了一件事:在您尝试读取代码中的任意变量之前,必须对其进行初始化。

  • 分配指令,即a = expression:一般情况下,初始化可以由两个种类的指令来实现。请注意,要将值分配给a,您必须首先获得值expression,因此必须首先初始化expression中使用的任何变量。
  • 将变量的地址&a)传递给函数,该函数在给定地址下写入值(通过编写*a = expr完成)。和以前一样,expr不能使用任何未初始化的变量。

更何况,您的程序似乎没有任何指令,它从输入中读取浮点数。

更重要的是,请记住free当你完成数据时,由malloc分配的内存!如果找你想知道为什么,请阅读this thread.

正如@Aubin说,你已经通过没有足够的论据gettingData功能。

重要提示:当使用编译好的,它总是使用-Wall标志,斑点简单的错误,像这样的一个好主意,并提醒你,你有机会运行,即使之前(前gccclang)。代码。像这些错误是由程序员通过他们的整个生活,-Wall标志每天为整个人类节省了很多时间。

0

,我认为我们不应该在这里编码你,但我可以提供给你共享(其中有太多的问题)代码中的一些建议。

  • 你似乎有一个未使用的变量dataSetSizes在你的主 功能(然而正在打印的话)
  • 如果您使用malloc,你应该释放这种分配内存。 请参阅免费()函数。
  • 您可能想要最终使用%f而不是%d,因为您将使用浮点值。
  • 如果你打算 只使用两个参数,为什么要用三个参数定义一个函数?
  • 等...

这是一个很好的做法,以避免编写任何代码,直到你有你的逻辑直。流程图,序列图或任何UML文档可能会有所帮助。这个想法是花时间考虑最有效的方式来实现你的目标,那么编码就是最简单的部分。