在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吗?
答案 0 :(得分:2)
在作业完成后,他们都指向同一个地方。
想象一下,你和你的朋友在一个房间里,有人把一个空盒子带进房间,你指着它。您现在指向已分配的内存。如果你的朋友也指着它,那么你们都指向相同的位置。
分配给任何一个都会把它放在同一个盒子里。
您也可以覆盖包装盒中的内容。
在考虑C中的指针及其工作方式时,确实考虑实体指向和方框确实有帮助。如果没有在页面上绘制的方框和箭头,我就无法编写我的第一个链接列表。