【发布时间】:2016-11-22 20:45:14
【问题描述】:
我在 C 中的全局变量有问题。我必须用 C 创建一个字符串数组。字符串的数量将由 shell 传递的参数 (number_of_string = atoi(argv[1])) 确定。所以我认为最好的方法是使用number_of_strings 指针数组。这个数组的每一个元素都将指向一个用malloc动态保留的内存部分。主要问题是我需要在执行 main (argv[1] 还不存在)之前将数组的大小定义为全局变量。我不知道我该如何解决这个问题。谁能帮帮我?
【问题讨论】:
-
为什么需要在执行前定义数组的大小?从逻辑的角度来看,如果您只知道运行时字符串的数量,怎么会发生这种情况?定义指针,使用
malloc分配字符串指针。 -
char **strings。strings = malloc(sizeof(char*)*atoi(argv[1]));每个string[x]都是malloc(sizeof(char)*<the_length_of_the_string_to_store>);的结果。如果出于某种原因,您希望它是全局的,只需将char **strings定义为全局即可。然后按照前面在main()或任何适当的地方所述进行初始化。 -
这是一种并发练习。我必须创建一个循环缓冲区,在其中存储一些由用户确定的字符串(通过 shell 传递数字)。这是完成程序所缺少的部分。
-
如果是循环缓冲区,那就另当别论了。这意味着,如果字符串的数量超过缓冲区规定的最大值,则添加的第一个字符串将被最新的字符串覆盖。
-
是的,但这不是问题所在。与循环缓冲区有关的所有事情都已经通过使用信号量解决了。
标签: c arrays shell concurrency global-variables