我被指派对别人编写的C程序做一些修改……我想先理解它,然后再正确地处理它……我发现了一个函数,它可以从给定的长数据串中生成ASCII值的直方图。是这样的。

//load the symbols the old data
  for(int k = 0;k < 256;++k)
  {
    sym[k].Symbol = k;
    sym[k].Count  = 0;
  }

  //Creating the probability distribution for each of the source symbols.
  for(int k = size;k;--k)
  {
    sym[*in ++].Count ++;
  }

这里的“in”是包含要计数的字符的字符数组(字符串)。sym是一个结构变量。我不太明白这是怎么回事。有谁能告诉我第二个循环是如何生成字符串中符号1到255(ASCII)的计数的?

最佳答案

for(int k = 0; k < size; k++)
  {
    sym[in[k]].Count++;
  }

这基本上就是第二个循环所做的。
它们只是取消引用,然后一步移动到下一个ascii值,并为该ascii值递增计数器。

关于c - 直方图生成功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1869062/

10-11 15:46