【问题标题】:assigning pointer to another pointer, does the second pointer point to the same address as the first one?将指针分配给另一个指针,第二个指针是否指向与第一个指针相同的地址?
【发布时间】:2014-04-13 02:15:47
【问题描述】:

在 C 编程中,我想知道以下指针分配:

struct transaction_t {
  int id;
  char *name;
};

typedef struct transaction_t* transaction;

transaction pointer1 = malloc(sizeof(struct transaction_t));
transaction pointer2 = pointer1; /* is this a valid assignment? */

我的问题是:指针 2 指向的地址是否与指针 1 指向的地址相同?我可以使用pointer2执行以下操作吗?

pointer2->name = "Chase Bank"
pointer2->id = 100;

为了将指针 1 关联到指针 2,我应该先为指针 2 分配内存吗?

【问题讨论】:

  • 是的,pointer1 和pointer2 指向同一个内存空间,不,如果前面的语句是你想做的,你不必malloc 内存。
  • 是的,你的理解是正确的。
  • 是的。在这里最简单的做法就是尝试一下。
  • 建一栋房子,把它的地址放在盒子1。现在把盒子1里的东西复制到盒子2里。它们是否包含同一个房子的地址? (是的。)在将地址复制到方框 2 之前,您必须建造另一所房子吗? (编号)

标签: c pointers malloc


【解决方案1】:

分配后,他们都指向同一个地方。

想象你和你的朋友在一个房间里,有人把一个空盒子带进房间,你指着它。您现在指向分配的内存。如果你的朋友也指向它,那么你们都指向相同的位置。

分配给任何一个都会把它放在同一个盒子里。

您还可以覆盖框中的内容。


在考虑 C 中的指针及其工作方式时,考虑实体指向和框确实很有帮助。如果没有在页面上绘制框和箭头,我将永远无法编写我的第一个链表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 2011-03-19
    相关资源
    最近更新 更多