【发布时间】:2014-06-17 23:33:28
【问题描述】:
我需要访问我在从文件读取的第一行创建的可变长度数组。 为了在我阅读以下行时访问该数组,我需要在第 1 行被读出我的条件语句之前对其进行初始化。但这是在我知道数组的长度之前。
这是我的代码示例
int count=0;
while (fgets(line, sizeof(line), fd_in) != NULL) {
if(count==0){
//get wordcount from line
int word[wordcount];
//put line data into array, using strtok()
}else{
//need to access the array here
}
count++;
}
编辑:我的问题是我应该如何才能在我需要的地方访问这个数组?
【问题讨论】:
-
思考:是否有可能回答一个不知道答案的问题?
-
省略号,你不能这样使用VLA。使用动态内存 (
malloc) 和指向数组开头的指针。此外,您不应该在分配(声明)之前写入数组。将信息存储在其他地方。 -
我们和编译器都不是通灵的,它不会改变 VLA 在范围内的大小。它怎么知道它是否可以复制东西?
-
如果您喜欢问题中显示的示例代码,那么变量
word在定义它的范围内是本地的,并且只能在该范围内访问。 -
我并没有特别询问如何做不可能的事情。更像是有任何其他方法,例如@osgx 提到的我将要研究的方法。
标签: c arrays scope dynamic-arrays variable-length-array