【问题标题】:problem assigning a pointer to a struct in C在 C 中分配指向结构的指针的问题
【发布时间】:2018-12-09 02:09:08
【问题描述】:

这是我在程序中遇到的错误:

[Error] cannot convert 'struct(*)[5] ' to 'struct* {aka Contact*}' in assignment

当我尝试这样做时:

typedef struct Contact{
    char FName[];
    char LName[];
} cont;                                                                    

cont AddressBook[SIZE];                                                   

int main(){ 
    cont *adbook = (cont *)calloc (SIZE, sizeof(cont));
    adbook=&AddressBook
}

如何将我的结构数组的地址分配给我的指针???

希望你能帮助我。

【问题讨论】:

  • 也许你的意思是cont *adbook = &AddressBook[0];。你的代码无论如何都不会用char FName[]; 编译
  • ^^^^ - 它只用两行短线泄漏内存。
  • 我是新来的。我有这个项目,我被困了好几个小时试图解决这个问题,但仍然没有得到它。

标签: c coding-style project


【解决方案1】:

当我们声明数组的时候,它的变量名其实已经是一个指向它地址的指针了。

所以当你在表演时

adbook=&AddressBook;

这就像说指向地址簿的指针的地址。这是无效的分配。 (有点像将指向指针 (**) 的指针分配给单个指针 (*))。

这可以通过在分配指针时删除“&”运算符来轻松解决。 制作它:

adbook=AddressBook;

这只是意味着“指向 AdressBook 的位置。

编码愉快!

【讨论】:

  • @Barmak Shemirani 关于内存泄漏的说法是正确的。甚至我实际上也需要一个解决方案。
猜你喜欢
  • 2013-03-02
  • 1970-01-01
  • 1970-01-01
  • 2017-01-04
  • 2018-05-16
  • 1970-01-01
  • 2014-02-23
  • 2011-05-23
  • 2021-07-14
相关资源
最近更新 更多