【发布时间】:2019-09-14 19:20:02
【问题描述】:
这是一些提供的 (CS50) 代码的 sn-p,它在嵌套循环中一遍又一遍地声明相同的 STRUCT“三元组”。为什么这样可以?在我看来,在嵌套循环的范围上方声明 STRUCT“三元组”并在每次迭代时更改值会更有效。
typedef struct
{
BYTE rgbtBlue;
BYTE rgbtGreen;
BYTE rgbtRed;
} __attribute__((__packed__))
RGBTRIPLE;
.
for (int i = 0, biHeight = abs(bi.biHeight); i < biHeight; i++)
{
// iterate over pixels in scanline
for (int j = 0; j < bi.biWidth; j++)
{
// temporary storage
RGBTRIPLE triple;
// read RGB triple from infile
fread(&triple, sizeof(RGBTRIPLE), 1, inptr);
// write RGB triple to outfile
fwrite(&triple, sizeof(RGBTRIPLE), 1, outptr);
}
【问题讨论】:
-
我认为在这种情况下“分配”应该被认为是“声明”——我不希望一个公认的初学者知道所有的术语:)。
-
是的,我在分配命名法上的错误,它已声明 - 我会解决这个问题。尽管如此,同一个声明的数千次迭代是否比第一个循环之前的单个声明更好?这是否适用于所有变量,可以在它们将使用的范围内一遍又一遍地声明它们吗?
-
感谢所有花时间帮助新手的人。从无知到理解还有很长的路要走,而这个论坛是长途陌生旅行的好工具……-Bill
-
比尔,很高兴能提供帮助!请您点击最适合您的答案旁边的复选标记以将该答案标记为已接受?这将对未来的读者有所帮助,并将提高您和回答者的声誉。谢谢!
-
啊,我没有意识到我需要选择获胜者......如果在杂货店选择一条线是一个指标,我的选择不会很有帮助。事实上,正确理解的大部分是 cmets 中的交互。再次感谢!