gpt4 book ai didi

c - 为双指针赋值

转载 作者:太空宇宙 更新时间:2023-11-04 02:07:25 25 4
gpt4 key购买 nike

我为 r 分配了内存,它是指向结构的双指针。然而,当我尝试使用这个变量时,我得到了一个错误:

错误信息

read-command.c:461:7: error: lvalue required as left operand of assignment
r+i = postfixToTree(postfix_string, &csPtr->nodeArray[i]);
^
make: *** [read-command.o] Error 1

用法

r+i = postfixToTree(postfix_string, &csPtr->nodeArray[i]);

声明

声明

   int b;
struct command** r;
r = (struct command**) malloc(50 * sizeof(struct command*));
for( b=0; b<50; b++){
*(r+b)=(struct command*) malloc(50*sizeof(struct command));
}

如何为 r 赋值?

最佳答案

C 赋值的一般语法。

    Lvalue=Rvalue;

上面的右值可以是表达式或函数调用的结果,也可以只是另一个相同类型的变量或常量,左值是可以存储右值的变量。

r+i = postfixToTree(postfix_string, &csPtr->nodeArray[i]);  

^^^

试图将 i 值添加到 r ,代替 Lvalue

在 C 中,左侧不应有任何求值部分。

先加后赋值

  r=r+i; //r+=i; 
r = postfixToTree(postfix_string, &csPtr->nodeArray[i]);

你可以把上面的语句写成如下

  r[i] = postfixToTree(postfix_string, &csPtr->nodeArray[i]);     

每次调用函数 postfixToTree()

for( b=0; b<50; b++)
*(r+b)=(struct command*) malloc(50*sizeof(struct command));

在这里,您将在每次迭代 上创建50struct command 副本。这样做会泄漏大量内存。

还有 free() 内存,它是用 malloc() 内部函数分配的。

关于c - 为双指针赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19238232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com