将未初始化的数组传递给C中的函数

雅各布·卢汀

我的程序的目的很简单,要从文件中读取整数序列,下面是代码:

int main()
{
   FILE *file = fopen("test.txt", "r");

   int *array = NULL; // Declaration of pointer to future array;
   int count;

   process_file(file, array, &count);

   return 0;
}

// Function returns 'zero' if everything goes successful plus array and count of elements as arguments
int process_file(FILE *file, int *arr, int *count)
{
    int a;
    int i;
    *count = 0;

    // Function counts elements of sequence
    while (fscanf(file, "%d", &a) == 1)
    {
        *count += 1;
    }

    arr = (int*) malloc(*count * sizeof(int)); // Here program allocates some memory for array

    rewind(file);

    i = 0;
    while (fscanf(file, "%d", &a) == 1)
    {
        arr[i] =  a;
        i++;
    }

    fclose(file);

    return 0;
}

问题是,在外部函数(主函数)中,数组未更改。如何解决?

放松

您需要按引用传递数组,以便函数可以更改其调用方的数组。

一定是:

process_file(FILE *file, int **arr, int *count)

像这样打电话:

process_file(file, &array, &count);

另外,我建议:

  • 使用size_t而不是int数组长度。
  • 不转换的返回值malloc()
  • 像这样计算大小:*array = malloc(*count * sizeof *array);,这避免了重复int

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将未初始化的结构传递给函数

来自分类Dev

在C ++中初始化模板时将函数传递给模板对象

来自分类Dev

将初始化列表传递给C ++中的数组成员

来自分类Dev

未初始化的数组传递给pipe(2)

来自分类Dev

为什么可以将未初始化的变量地址传递给函数的指针参数

来自分类Dev

将数组结构作为指针传递给函数并进行初始化

来自分类Dev

使用初始化列表将模板大小的数组传递给函数

来自分类Dev

将C#对象传递给函数,并尝试使用deSerializer初始化值。所做的更改未反映在功能之外

来自分类Dev

在初始化C#时将参数传递给字典中的操作

来自分类Dev

在.net 6中,当服务初始化在值的配置绑定之前,我如何将参数传递给构造函数?

来自分类Dev

C语言数组中未初始化元素的值

来自分类Dev

在C中初始化未签名的char数组

来自分类Dev

将未初始化的变量传递给srand是个好主意吗?

来自分类Dev

在构造函数中初始化的变量未保持初始化状态(C ++)

来自分类Dev

取消引用未初始化的指针以传递给 sizeof()

来自分类Dev

在函数中未初始化的变量

来自分类Dev

将指针传递给对象时,没有匹配的构造函数初始化问题

来自分类Dev

将初始化列表传递给基于向量的构造函数

来自分类Dev

为什么要在将结构传递给函数之前初始化它?

来自分类Dev

如何将括号括起来的初始化器列表传递给函数?

来自分类Dev

将参数传递给基类构造函数时成员的初始化

来自分类Dev

将指针传递给指针与传递指针以在C中进行初始化

来自分类Dev

C ++-在构造函数中初始化指针数组

来自分类Dev

用C++中的函数初始化数组

来自分类Dev

C ++初始化构造函数初始化器列表中的模板数组

来自分类Dev

使用初始化列表时检查传递给构造函数的参数-C ++

来自分类Dev

如何通过COM将未初始化的数组从VB6传递到.NET?

来自分类Dev

将字符数组传递给 C++ 中的参数化构造函数

来自分类Java

如何将初始化参数传递给HttpSessionListener?

Related 相关文章

  1. 1

    将未初始化的结构传递给函数

  2. 2

    在C ++中初始化模板时将函数传递给模板对象

  3. 3

    将初始化列表传递给C ++中的数组成员

  4. 4

    未初始化的数组传递给pipe(2)

  5. 5

    为什么可以将未初始化的变量地址传递给函数的指针参数

  6. 6

    将数组结构作为指针传递给函数并进行初始化

  7. 7

    使用初始化列表将模板大小的数组传递给函数

  8. 8

    将C#对象传递给函数,并尝试使用deSerializer初始化值。所做的更改未反映在功能之外

  9. 9

    在初始化C#时将参数传递给字典中的操作

  10. 10

    在.net 6中,当服务初始化在值的配置绑定之前,我如何将参数传递给构造函数?

  11. 11

    C语言数组中未初始化元素的值

  12. 12

    在C中初始化未签名的char数组

  13. 13

    将未初始化的变量传递给srand是个好主意吗?

  14. 14

    在构造函数中初始化的变量未保持初始化状态(C ++)

  15. 15

    取消引用未初始化的指针以传递给 sizeof()

  16. 16

    在函数中未初始化的变量

  17. 17

    将指针传递给对象时,没有匹配的构造函数初始化问题

  18. 18

    将初始化列表传递给基于向量的构造函数

  19. 19

    为什么要在将结构传递给函数之前初始化它?

  20. 20

    如何将括号括起来的初始化器列表传递给函数?

  21. 21

    将参数传递给基类构造函数时成员的初始化

  22. 22

    将指针传递给指针与传递指针以在C中进行初始化

  23. 23

    C ++-在构造函数中初始化指针数组

  24. 24

    用C++中的函数初始化数组

  25. 25

    C ++初始化构造函数初始化器列表中的模板数组

  26. 26

    使用初始化列表时检查传递给构造函数的参数-C ++

  27. 27

    如何通过COM将未初始化的数组从VB6传递到.NET?

  28. 28

    将字符数组传递给 C++ 中的参数化构造函数

  29. 29

    如何将初始化参数传递给HttpSessionListener?

热门标签

归档