指向另一个指针的指针,第二个指针指向与第一个指针相同的地址吗?

时间:2014-04-13 02:15:47

标签: c pointers malloc

在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是否指向与pointer1指向的地址相同的地址?我可以使用pointer2执行以下操作吗?

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

为了将pointer1指向指针2,我应该首先将内存用于指针2吗?

1 个答案:

答案 0 :(得分:2)

在作业完成后,他们都指向同一个地方。

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

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

您也可以覆盖包装盒中的内容。


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