Это выражение утверждение, которое действует в C
head,next,n1=malloc(sizeof(node));
состоит из трех подвыражений, которые являются операндами оператора запятой.
Вы можете представить это как
(head), (next), (n1=malloc(sizeof(node)));
Так как вы можете видеть только n1 присваивается значение, возвращенное зову malloc
.
Вы могли бы написать вместо
head = next = n1 = malloc(sizeof(node));
но опять же в этом случае функция таНос вызывается один раз, и его значение присваивается трех указателей n1, затем и голову. То есть все три указателя будут иметь одинаковое значение - адрес выделенной памяти этим одним вызовом malloc.
Итак, если вы хотите, чтобы каждый указатель указывал на свою выделенную память, вы должны вызвать malloc три раза.
head = malloc(sizeof(node));
next = malloc(sizeof(node));
n1 = malloc(sizeof(node));
Собственно, только для уточнения. Вы хотите, чтобы все три переменные указывали на одну и ту же память или другую память? Ссылка выше показывает, как это сделать для первого. – kaylum
Различные места памяти – kalyani
Хорошо, тогда ответ невозможен в синтаксисе Си. Требуется несколько отдельных назначений с соответствующим вызовом 'malloc'. – kaylum