如何将变量从变量传递给指针结构对象?

Posted

技术标签:

【中文标题】如何将变量从变量传递给指针结构对象?【英文标题】:How do I pass variables from a variable to a pointer struct object? 【发布时间】:2019-11-04 05:22:14 【问题描述】:

我试图将我设置为随机的变量“val”传递给指针 HEAD,最后我想打印出 HEAD->val。

我尝试使用“HEAD->val = n.val;”直接设置它如您所见,但这会导致 cout 最后打印 10 个随机数。

#include <iostream>

#include <stdlib.h>

#include <time.h> 

using namespace std;

struct Cell 
    int val;

    Cell *next;


;




int main()


    int MAX = 10;

    srand (time(NULL));

    Cell *c = NULL;

    Cell *HEAD = NULL;

    Cell n;



    for (int i=0; i<MAX; i++) 
        // Use dynamic memory allocation to create a new Cell then initialize the 
        // cell value (val) to rand().  Set the next pointer to the HEAD and 
        // then update HEAD. 

        Cell n = ;
        n.val = rand();
        n.next = HEAD;
        HEAD->val = n.val;



        cout << n.val << endl;
    




我正在尝试:

    n --&gt; HEAD 传递val 变量 打印出HEAD -&gt; val

我知道如何做 #2,但尝试做 #1 会导致其他事情出现问题,正如我上面所说的。我相信我这样做会以某种方式覆盖 n 的值,但我想知道为什么。任何帮助表示赞赏。

【问题讨论】:

您的代码看起来更像 C 代码而不是 C++ 代码。 您的代码与您的 cmets 不匹配。 1) “使用动态内存分配”但没有动态内存分配。 2) "then update HEAD"HEAD 的值没有更新。您是否检查过问题中发布的代码是否仍能产生您描述的结果? 【参考方案1】:

您实际上需要先分配head,然后才能做一些事情,比如给它一个valnew 可以为此工作。它看起来像这样:

Cell *HEAD = new Cell;

然后,您需要在完成后delete它:

delete HEAD;

不过,这并不理想。如果可以的话,最好使用smart pointers。

【讨论】:

以上是关于如何将变量从变量传递给指针结构对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何将变量从 ViewController 类传递给其他结构?

将对象类型变量传递给另一个类但保持结构?

如何将变量从 .map() 传递给回调函数

Delphi 中 如何将函数的地址赋值给指针变量?

将指向局部变量的指针传递给函数:它安全吗?

Thymeleaf/SB 如何将变量从对象传递到链接元素的 href 属性?