【发布时间】:2014-01-26 16:13:47
【问题描述】:
我正在尝试通过 iTunes 大学/哈佛 CS50 课程自学 C。在其中将编写一个程序来调整位图图像文件的大小。为此,我定义了一个数组(缓冲区)并编写了程序运行所需的代码——它确实有效。但是,我不得不作弊并用谷歌搜索答案,因为我无法弄清楚,而且我不理解解决方案中的特定语法,希望有人能提供帮助。
代码块如下所示,我在 cmets 中添加了我的具体困惑点:
// allocate array to hold scanline pixels - this is the array I define
RGBTRIPLE *buffer = malloc(bi.biWidth * sizeof(RGBTRIPLE));
// declare variable to track position in buffer array
int count;
// iterate over infile's scanlines
for (int i = 0, height = abs(oldHeight); i < height; i++)
{
// initialize count var to 0
count = 0;
// iterate over pixels in scanline
for (int j = 0; j < oldWidth; j++)
{
// temporary storage
RGBTRIPLE triple;
// read RGB triple from infile
fread(&triple, sizeof(RGBTRIPLE), 1, inptr);
// place pixel in buffer array n times
for (int k = 0; k < n; k++)
{
// below is the confusion. Some sudo code would be great!
*(buffer+(count)) = triple;
count++;
}
}
【问题讨论】:
-
这门哈佛课程的标题是“编程范式”吗?还是我将它与斯坦福的视频课程混淆了?如果这是一个穿蓝色衬衫的人在大黑板上说话和画画,请快速点击“停止”,他会说很多废话/错误的假设/不好的做法。
-
顺便说一句,这不是“sudo 代码”。 “Sudo 代码”将是名为
sudo的 Unix 根特权实用程序的源代码。你要找的词是“伪代码”。 -
@H2CO3;我想听那个人的。严重地! o.O
-
@hacks 在this video 上查看我的 cmets(以及传入的无知回复)。有了 C99 标准的新副本,任何有中级经验的 C 程序员都可以在这个人的演示中指出几十个错误。
-
@H2CO3,我同意,只是看了一眼那个视频,这令人难以置信的模糊、不精确、误导、错误......但几乎从不正确。