我正在传递一个指向函数的结构指针,其中为结构分配内存。效果很好。但我无法计算出如何在同一函数中为新分配的结构分配一个值。
我以为我在另一篇文章Allocate memory for a pointer to a struct inside a function中找到了我的问题的答案,但是当我复制和编译答案时,我得到了同样的错误。错误在行中:*myNameIs->name = 1;// error在这里表示必须指向类/struct/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);
}发布于 2016-02-15 03:38:24
您需要使用(*myNameIs)->name = 1;。没有父母,它就像*(myNameIs->name) = 1;。
发布于 2016-02-15 03:39:48
问题在于,从技术上讲,您正试图取消对整数的引用。编译器将表达式*myNameIs->name = 1;视为
*(myNameIs->name) = 1;要解决这个问题,只需在myNameIs和附带的*周围添加括号
(*myNameIs)->name = 1;A旁注
使用void main()是不好的做法。相反,您应该使用int main()及其变体,并将一个值返回给操作系统。
https://stackoverflow.com/questions/35401029
复制相似问题