c-是使用指向其结构的指针来分配内存更好,还是使用结构本身

  • 本文关键字:结构 内存 更好 分配 指针 c malloc
  • 更新时间 :
  • 英文 :


我将实际代码中用(1)标记的行替换为:,得到了相同的值

Date *ptrdate = malloc(12 * sizeof(*ptrdate));

问题:哪一个更好,为什么?

这是我的实际代码:

typedef struct {
int day;
int mo;
} Date;
void main(){
Date *ptrdate = malloc(12 * sizeof(Date)); //(1)
ptrdate[0].day=26;
ptrdate[0].mo=5;
printf("Date:%d/%dn", ptrdate[0].day, ptrdate[0].mo);
}

将代码编写为

Date *ptrdate = malloc(12 * sizeof(*ptrdate));

或者,更清洁的方法

Date *ptrdate = malloc(12 * sizeof *ptrdate);  //sizeof is operator, no need for extra "()"

是更可接受和更可取的,因为它使代码更健壮。即使

  • ptrdate的类型将来会发生变化
  • 将代码与具有单独typedefDate的任何外部库一起使用(创建冲突)[#]

您不需要更改这部分代码。

此外,推荐的main()的签名是int main(void)


[#]感谢@Elias Van Ootegem先生的以下评论]

这更多的是品味/风格的问题。我更喜欢sizeof(Date),因为这对我来说似乎更有可读性。但你可以随心所欲——这里没有真正的区别。

相关内容

  • 没有找到相关文章

最新更新