Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中的指针使用Malloc分配数组?_C_Arrays_Pointers - Fatal编程技术网

C中的指针使用Malloc分配数组?

C中的指针使用Malloc分配数组?,c,arrays,pointers,C,Arrays,Pointers,我在这项运动中遇到了一些问题。这个程序的工作方式是用户输入数据集的数量,比如说3。然后用户输入浮点数,然后输入浮点数,然后按enter键输入第二个和第三个数据集。因此,输入示例如下 输入数据集的数量:3 3 12.5 3.4 6.7 5 7.7 5.5 8.8 3.3 5.7 289.384.5 之后,用户选择要对数据2执行操作的数据,即[5 7.7 5.5 8.8 3.3 5.7] 然后返回数字的最大值 因为我们不知道数据集的数量,所以我们必须使用一个动态分配的数组,就像我在代码中所做的那样,

我在这项运动中遇到了一些问题。这个程序的工作方式是用户输入数据集的数量,比如说3。然后用户输入浮点数,然后输入浮点数,然后按enter键输入第二个和第三个数据集。因此,输入示例如下

输入数据集的数量:3
3 12.5 3.4 6.7
5 7.7 5.5 8.8 3.3 5.7
289.384.5

之后,用户选择要对数据2执行操作的数据,即[5 7.7 5.5 8.8 3.3 5.7] 然后返回数字的最大值

因为我们不知道数据集的数量,所以我们必须使用一个动态分配的数组,就像我在代码中所做的那样,并让指针指向该数组以找到该特定数据集的最大值。我想我需要两个数组,一个用来跟踪数据,另一个用来跟踪集合。这是我的密码

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

您似乎忘记了一件事:在尝试读取代码中的任何变量之前,必须对其进行初始化。通常,可以通过两种指令实现初始化:

  • 赋值指令,即
    a=expression
    。注意,为了给
    a
    赋值,必须首先获得
    表达式的值,因此必须首先初始化
    表达式中使用的任何变量
  • 将变量的地址
    &a
    )传递给函数,该函数在给定地址下放置一个值(通过写入
    *a=expr
    )。与前面一样,
    expr
    不能使用任何未初始化的变量
此外,您的程序似乎没有任何从输入读取浮点值的指令

更重要的是,当您处理完数据后,请记住
释放
malloc
分配的内存!如果你对为什么感兴趣,请阅读

正如@Aubin所说,您没有向
gettingData
函数传递足够的参数


重要提示:当使用一个好的编译器(例如
gcc
clang
)时,最好使用
-Wall
标志,该标志会发现像这样的简单错误,并在您有机会运行代码之前警告您。程序员一生都会犯这样的错误,
-Wall
flag每天为全人类节省大量时间。

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

  • 您的主数据库中似乎有一个未使用的变量datasetsize 功能(但仍在打印中)
  • 如果您使用的是malloc,那么应该释放这些分配的内存。 请参阅free()函数
  • 您可能希望最终使用%f而不是%d,因为您将使用浮点值
  • 如果您要定义一个具有三个参数的函数,为什么要定义它 只用两个
  • 等等

在逻辑清晰之前避免编写任何代码是一种很好的做法。流程图、序列图或任何UML文档可能会有所帮助。我们的想法是花时间思考实现目标的最有效方法,因此,编码可以是最简单的部分。

请发送您用于测试的代码,或者我们可以做些什么。请参见标准StackOverflow文档页面中的如何提问。不这样做可能会触发“非编程问题”标志,您的问题将被关闭。