我四處尋找如何解決我的問題。我找到類似於我的問題的解決方案,但是當我應用更改錯誤時:error: request for member 'mark' in something not a structure or union
不斷顯示。爲函數中的char數組指針分配內存
我到目前爲止是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;
}
Postfix' - >'具有比一元'*'更高的優先級。 – EOF
此代碼充滿語法錯誤。而且,'john'不是一個指向結構體的指針。 – melpomene
@EOF即使添加parens也無濟於事。 '_st'是一個三重指針; '*'和' - >'只能解除引用兩次。 – melpomene