首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在函数中分配内存后将值赋值给结构

在函数中分配内存后将值赋值给结构
EN

Stack Overflow用户
提问于 2016-02-15 03:25:48
回答 2查看 240关注 0票数 2

我正在传递一个指向函数的结构指针,其中为结构分配内存。效果很好。但我无法计算出如何在同一函数中为新分配的结构分配一个值。

我以为我在另一篇文章Allocate memory for a pointer to a struct inside a function中找到了我的问题的答案,但是当我复制和编译答案时,我得到了同样的错误。错误在行中:*myNameIs->name = 1;// error在这里表示必须指向类/struct/union/泛型类型

代码语言:javascript
复制
  typedef struct s_nName {
        int  name;
    }myName;

    //function for allocating the memory
    void structMemInit(myName **myNameIs)
    {
        // argument is pointer-to-pointer 
        *myNameIs = (myName *) calloc(1, sizeof(myName)); // dereference pointer to get underlying pointer

        *myNameIs->name = 1; // error here
    }


    void main(void) {

        myName *myNameIs;

        structMemInit(&myNameIs); // pass the address of your pointer

        printf("%s\n", myNameIs->name);

    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-15 03:38:24

您需要使用(*myNameIs)->name = 1;。没有父母,它就像*(myNameIs->name) = 1;

票数 3
EN

Stack Overflow用户

发布于 2016-02-15 03:39:48

问题在于,从技术上讲,您正试图取消对整数的引用。编译器将表达式*myNameIs->name = 1;视为

代码语言:javascript
复制
*(myNameIs->name) = 1;

要解决这个问题,只需在myNameIs和附带的*周围添加括号

代码语言:javascript
复制
(*myNameIs)->name = 1;

A旁注

使用void main()是不好的做法。相反,您应该使用int main()及其变体,并将一个值返回给操作系统。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35401029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档