【发布时间】:2016-11-18 18:44:37
【问题描述】:
我花了大约一天时间寻找如何解决我的问题。我找到了与我类似的问题的解决方案,但是当我应用更改错误时:error: request for member 'mark' in something not a structure or union 不断显示。
到目前为止,我拥有的是 struct,我想在函数调用中对其进行初始化。
编辑我的代码:
typedef struct student * Student;
struct student {
char *mark; /* or array[2] like array[0] = 'A' , array[1] = 'B' */
int age;
int weight;
};
typedef enum{
MEMORY_GOOD,
MEMORY_BAD} Status;
int main(int argc, char* argv[]) {
int status = 0;
Student john
/* Function call to allocate memory*/
status = initMemory(&john);
return(0);
}
Status initMemory(Student *_st){
_st = malloc(sizeof(Student));
printf("Storage size for student : %d \n", sizeof(_st));
if(_st == NULL)
{
return MEMORY_BAD;
}
_st->mark = malloc(2*sizeof(char)); /* error: request for member 'mark' in something not a structure or union */
return MEMORY_GOOD;
}
【问题讨论】:
-
后缀
->的优先级高于一元*。 -
这段代码充满了语法错误。此外,
john不是指向结构的指针。 -
@EOF 即使添加括号也无济于事。
_st是一个三重指针;*和->仅取消引用两次。 -
@melpomene 啊,旧的
typedefd 指针。经典。 -
你能把它们(充满错误)指向我吗,这样,我可以修复它们。