gpt4 book ai didi

c - 在 malloc 中使用和不使用指针之间的区别

转载 作者:行者123 更新时间:2023-11-30 20:48:01 24 4
gpt4 key购买 nike

我只是想知道 malloc(sizeof(*some_struct)) 和 malloc(sizeof(some_struct)) 之间的区别。

我刚刚学习 C,最近遇到了一些问题。对于这个菜鸟问题我很抱歉,但我不知道如何在谷歌上搜索它。

最佳答案

假设你有

typedef struct some_structure {
int a;
int b;
int c;
} some_structure;

int main(void)
{
some_structure *hello = NULL;
}
  • 那么,hellosome_struct * 的类型:即“结构指针”。
  • 并且 *hellosome_struct 的类型:即“some_struct”。

每个级别的指针都会发生同样的情况:

int main(void)
{
some_structure **hello = NULL;
}
  • 那么,hellosome_struct ** 的类型:即“结构体指针的指针”。
  • 并且 *hellosome_struct * 的类型:即“some_struct 的指针”。
  • 最后,**hellosome_struct 的类型:即“some_struct”。

当你 malloc 某些东西时,你想为结构本身分配内存。然后您想要 malloc some_struct 本身的类型。

这就是您通常使用*some_struct的原因。

为什么不直接使用sizeof(some_struct)?因为如果变量类型发生变化。

使用some_struct *hello = malloc(sizeof(*hello)),即使更改hello的类型,malloc仍然有效。

关于c - 在 malloc 中使用和不使用指针之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49851174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com