如何将变量从变量传递给指针结构对象?
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 --> HEAD
传递val
变量
打印出HEAD -> val
我知道如何做 #2,但尝试做 #1 会导致其他事情出现问题,正如我上面所说的。我相信我这样做会以某种方式覆盖 n 的值,但我想知道为什么。任何帮助表示赞赏。
【问题讨论】:
您的代码看起来更像 C 代码而不是 C++ 代码。 您的代码与您的 cmets 不匹配。 1) “使用动态内存分配”但没有动态内存分配。 2) "then update HEAD" 但HEAD
的值没有更新。您是否检查过问题中发布的代码是否仍能产生您描述的结果?
【参考方案1】:
您实际上需要先分配head
,然后才能做一些事情,比如给它一个val
。 new
可以为此工作。它看起来像这样:
Cell *HEAD = new Cell;
然后,您需要在完成后delete
它:
delete HEAD;
不过,这并不理想。如果可以的话,最好使用smart pointers。
【讨论】:
以上是关于如何将变量从变量传递给指针结构对象?的主要内容,如果未能解决你的问题,请参考以下文章