C,静态数组中的函数不好作法?

时间:2018-11-29 19:15:06

标签: c arrays

所以我有一个相当简单的程序。在我的主要功能中,我有一个二维数组。我想用其他数组填充二维数组。所以我有一个函数,该函数返回一个指向包含我想要的二维数组的值的数组的指针。然后,我使用一个for循环将指针所指向的数组中的值传输到main中的二维数组中。

这是不好的做法吗?还是可以吗?

1 个答案:

答案 0 :(得分:1)

如果您的程序是(将来将要使用)多线程程序,则可能会出现问题。考虑一个场景,其中两个线程调用您的函数并在您的函数中具有指向static数组的指针。这将导致data race,从而导致undefined behaviour

更糟糕的是,如果它在库代码中,则的用户甚至可能不知道数据竞争。

但是,如果该静态数组不被修改(即,其值在初始化时是固定的)并且仅用于读取其值,则不会出现上述问题。

我个人会避免使用它们,除非我真的真的没有更好的选择。