我被指派对别人编写的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/