c - 在函数中分配内存后为结构赋值

标签 c pointers memory struct

我正在将一个结构指针传递给一个函数,其中为该结构分配了内存。工作正常。但是我不知道要为同一个函数内的新分配的结构赋值。
我以为我在另一篇文章中找到了问题的答案 Allocate memory for a pointer to a struct inside a function 但是当我复制并编译答案时,我得到了同样的错误。 错误在行中:*myNameIs->name = 1;//这里的错误说必须指向类/结构/union/通用类型

  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);

    }

最佳答案

您需要使用 (*myNameIs)->name = 1;。如果没有括号,它会像 *(myNameIs->name) = 1; 这样关联。

关于c - 在函数中分配内存后为结构赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35401029/

相关文章:

pointers - 语法错误: missing ';' before '*' when creating a pointer object of a user defined abstract class

比较 2 个字符串,一个在结构中,另一个不是 C 编程

c - 矩阵分配的段错误错误

c - 如何释放C中的内存

Java:你能像 C 中那样对待 null 像整数 0 吗?

java - 限制 ubuntu 上的 jvm 进程内存

python - 文件数据到数组正在使用大量内存

c++ - 如何优化在频繁调用的函数中将大型 std::unordered_map 重用为临时函数?

c - 在c中获取相当于数字的字符

c++ - 编译c代码时如何使g++忽略calloc指针类型错误