gpt4 book ai didi

c - 结构体指针和结构体变量的使用有什么区别?

转载 作者:行者123 更新时间:2023-11-30 20:00:59 31 4
gpt4 key购买 nike

struct Book {
int i;
} variable, *ptr;

在访问结构体成员时,我们使用variable.i或ptr->i我的问题是变量和 *ptr 之间/使用之间的区别是什么

最佳答案

想象一只狗。

现在想象一条狗皮带。

现在想象一下那只狗,被拴在皮带上。

皮带代表着狗的指针。如果您创建了一个指针(皮带),但没有一个结构来指向(狗),那么您就不能去公园玩飞盘。

如果你有一个结构,但没有指针,你仍然可以做很多事情。

使用指针需要有一个指向的结构。您可以声明一个结构,然后使用 & 运算符指向它,也可以调用 malloccalloc 等函数,这将返回动态分配的内存,您可以将其用作结构:

void demo() {
struct Book b1;
struct Book b2;

typedef struct Book * Bookptr;

Bookptr p;

// Assign pointer to existing object using address operator:

p = &b1;
p->i = 10;
p = &b2;
p->i = 12;
printf("Book 1 has i: %d, while Book 2 has i: %d\n", b1.i, b2.i);

// Use dynamically allocated memory
p = calloc(1, sizeof(struct Book));
p->i = 3;
printf("Dynamic book has i: %d\n", p->i);
free(p);
}

关于c - 结构体指针和结构体变量的使用有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37195391/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com