我有一个功能

struct Analysis reduce (int n, void* results)


其中n是要分析的文件数,我将一个Analysis结构数组传递给结果。

Analysis结构定义如下:

struct Analysis {
  int ascii[128]; //frequency of ascii characters in the file
  int lineLength; //longest line in the file
  int lineNum; //line number of longest line
  char* filename;
}


我已经将空白*

struct Analysis resArray[n];
struct Analysis* ptr = results;
resArray[0] = ptr[0];


但我不知道如何正确地遍历resArray。我试过了

for (i = 0; i < n; i++){
  printf("lineLength: %d\n", resArray[i].lineLength);
}


n = 3,而我得到的是垃圾值。 resArray [0]是正确的,但是resArray [1]是一个非常高的数字,而resArray [2]只是0。为什么resArray [1]或resArray [2]不能提供正确的值?如果我不正确地增加了地址,那是有道理的,但是我只是在某个索引处访问数组。这里真丢人!

最佳答案

resArray [0]是正确的,因为存在“某物”:

resArray[0] = ptr[0];


其他元素是垃圾,因为您没有在其中设置任何值。如果要复制整个阵列,则需要将复制方法更改为:

for (i = 0; i < n; i++)
{
  resArray[i] = ptr[i];
}

关于c - C-遍历通过void *的结构数组迭代,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39404854/

10-11 21:30