i have declared char pointer in following manner:
school *student[10]; for(i=0;i<10;i++){ *student[i] = malloc(sizeof(student)); <--- error points here }
the error is:
incompatible types when assigning type 'struct student' type 'void*'
does know why getting error?
but how come if allocate memory in same line star. example: student *name = malloc(sizeof(student));
why work? im bit confused
*student[i] = malloc(sizeof(school));
should student[i] = malloc(sizeof(school));
students
array of pointer struct of type school
. need allocate each pointer in array. when write *student[i]
- dereferencing pointer i
instead of allocating memory it.
and nicolasmiari pointed out, sizeof
operator must apply school
instead of student
.
but how come if allocate memory in same line star. example: student *name = malloc(sizeof(student)); why work? im bit confused
that's different. when write student *name = malloc(sizeof(student));
both declaring pointer , initialize malloc
. can both steps in single line that. alternatively, declare first, assign malloc
in different line - in case must remove asterisk.
you may want refer question pointer initialization , pointer assignment.
Comments
Post a Comment