我通过在实际代码中用(1)替换标记的行来获得相同的值:
Date *ptrdate = malloc(12 * sizeof(*ptrdate));
Run Code Online (Sandbox Code Playgroud)
问题:哪一个更好,为什么?
这是我的实际代码:
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/%d\n", ptrdate[0].day, ptrdate[0].mo);
}
Run Code Online (Sandbox Code Playgroud)
编写代码为
Date *ptrdate = malloc(12 * sizeof(*ptrdate));
Run Code Online (Sandbox Code Playgroud)
或者,更清洁的方法
Date *ptrdate = malloc(12 * sizeof *ptrdate); //sizeof is operator, no need for extra "()"
Run Code Online (Sandbox Code Playgroud)
更容易接受和期望,因为它使代码更健壮.即使
ptrdate将来改变的类型typedef编辑的外部库Date(创建冲突)[#]您无需更改此部分代码.
此外,推荐的签名main()是int main(void).
[#]感谢@Elias Van Ootegem先生发表以下评论]
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |