【发布时间】:2021-10-19 02:52:31
【问题描述】:
我目前正在研究 CS50 的 Lab 4 - Volume。我有以下代码,我想知道是否可以在调用 free 后在两个不同的地方使用相同的指针名称。
//Initialize tmp pointer and copy header bytes from input to output file
uint8_t *tmp = malloc(sizeof(uint8_t));
if (*tmp == NULL)
{
printf("Mem_ERR_2\n");
return 2;
}
for (int b = 0; b < 44; b++)
{
*tmp = fgetc(*input);
*output = fputc(*tmp);
printf("H_BYTE = %i\n", b++);
}
free(*tmp);
我已经初始化了*tmp,取消了它的引用,现在我可以免费调用它了。在此之后,我想为代码的不同部分创建第二个 *tmp 指针。我的问题是,为第二个指针初始化 uint16_t *tmp 是一种很好的做法,甚至在语法上也可以?还是应该将它们更改为*tmp1 和*tmp2?
【问题讨论】:
-
语法上我认为不是(不同的类型、变量的重新声明等),但就“良好做法”而言,我会在“否”阵营中。尝试考虑一个比
tmp更相关的变量名称。 -
好吧,我有点这么想,但我想得到一些意见。至于链接的帖子,我并没有真正看到我在寻找什么,但我并没有深入挖掘所有内容。我一定会仔细阅读那篇文章,因为那里似乎有一些不错的信息。
标签: cs50