我可以同时将内存分配给不同的结构指针吗?

Can i assign memory to different struct pointer at same time?

我是一个新的C学习者,有一个问题。我可以同时将内存分配给不同的结构指针吗?像这样:

head,next,n1=malloc(sizeof(node));

head next和n1是struct类型的指针,node是struct name。这会在内存中创建 3 个不同的结构指针吗?

不可以,你可以做的就是让所有的指针都指向同一个地址:

head=next=n1=malloc(sizeof(node));

同于:

n1 = malloc(sizeof(node));
next = n1;
head = next;

C中有效的表达式语句

head,next,n1=malloc(sizeof(node));

由三个子表达式组成,它们是逗号运算符的操作数。

你可以这样想象

( head ), ( next ), ( n1=malloc(sizeof(node)) );

如您所见,只有 n1 被分配了调用 malloc 返回的值。

你可以改写

head = next = n1 = malloc(sizeof(node));

但在这种情况下,再次调用函数 malloc 并将其值分配给三个指针 n1、next 和 head。也就是说,所有三个指针都将具有相同的值 - 通过这一次 malloc 调用分配的内存地址。

因此,如果您希望每个指针都指向其自己分配的内存,那么您必须调用 malloc 三次。

head = malloc(sizeof(node));
next = malloc(sizeof(node));
n1 = malloc(sizeof(node));

在 C 中,“,”(逗号)运算符用于定义相同类型的多个变量。例如:

int n1, next, head;

但不能用于给变量赋值。为此,您需要使用赋值运算符“=”(等于)。例如:

head = next = n1 = malloc(sizeof(node));