指针-转换为结构指针+ Malloc

好东西

我对此有一些想法,但是我想要一个更专业和更有经验的解释。

typedef struct{
     char str[50];
     unsigned short num;
}s;

s *name = (s *) malloc(sizeof(s));

第一部分定义一个结构。我对此没有问题,
这将创建一个指向“ s”结构的指针。malloc()返回一个内存地址,该地址将被转换为指向“ s”的指针。但是,sizeof(s)我相信我在理解一些问题。

char str[50];= 50个字节。
unsigned short num;= 2个字节。

sizeof(s)返回52个字节?

malloc(sizeof(s))分配52个字节并返回第一个地址,并将其强制转换为指向“ s”的指针?

还有一个问题!如何使用内联malloc执行错误处理?

感谢任何可以帮助您澄清这一点的人!

用户名
  • 在C中,我们无需转换的返回值mallocmalloc返回void *,在C语言中,void *隐式转换为您指定的任何类型...
  • 返回的值sizeof(s)取决于填充以及实现(cos,sizeof(unsigned short)在不同平台上会有所不同...)。
  • 在C语言中,如果要检查错误,则必须将的返回值malloc进行比较NULL

    如果(name == NULL)退出(1); // EXIT_FAILURE

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章