struct Book {
int i;
} variable, *ptr;
Run Code Online (Sandbox Code Playgroud)
在访问结构成员时,我们使用 variable.i 或 ptr->i 我的问题是变量和 *ptr 的使用/使用之间有什么区别
想象一只狗。
现在想象一条狗皮带。
现在想象一下被拴在皮带上的狗。
皮带代表指向狗的指针。如果您创建一个指针(皮带),不也有一个结构,以点(狗),那么你就不能去公园和玩飞盘。
如果你有一个结构,但没有一个指针,你仍然可以做很多事情。
使用指针需要有一个指向的结构。您可以声明一个结构,然后使用&运算符指向它,或者您可以调用类似malloc或calloc这样的函数,该函数将返回动态分配的内存,您可以将其用作结构:
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);
}
Run Code Online (Sandbox Code Playgroud)