a friend of mine and I are disagreeing on the following statements
Which are LEGAL?
Which are ILLGAL? why?
assume following:
Code:
struct node {
char c;
struct node * next;
};
struct node *p, *q, *r; <----------- pointers
struct node x, y, z; <-----------non pointers
(a) p = (struct node *)malloc(sizeof(struct node)); legal
(b) *q = (struct node *)malloc(sizeof(struct node)); illegal
(c) x = (struct node *)malloc(sizeof(struct node)); illegal
(d) p = r; legal
(e) q = y; illegal
(f) r = NULL; legal
(g) z = *p; illegal friend says legal here
(h) p = *x; illegal
(i) free(y); illegal
(j) free(*p); illegal
(k) free(r); legal
(l) *q = NULL; illegal
(m) *p = *x; illegal
(n) z = NULL; legal friend says illegal here