我正在将一个结构指针传递给一个函数,其中为该结构分配了内存。工作正常。但是我不知道要为同一个函数内的新分配的结构赋值。
我以为我在另一篇文章中找到了问题的答案 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/