我可以同时将内存分配给不同的结构指针吗?
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));
我是一个新的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));