C中指向struct的指针,内容是什么?

Pointer to struct in C, what is the content?

我想知道我是否有这样的代码:

struct something{
    int x;
    float y;
};

int main(void)
{
    struct something *p;
    p = malloc(sizeof(struct something));
    p->x = 2;
    p->y = 5.6;
    return 0;
}

如果在某处调用,*p(带*)的内容是什么?是结构的地址还是什么?

p 是指向 struct something 的指针。 *p 将取消引用该指针以提供结构本身。但是,问题在于:struct (*p) 是一种复合数据类型,您需要使用 . 运算符来获取其成员。

(*p).x = 2;
(*p).y = 5.6;

这也可以在不使用间接运算符 (*) 的情况下完成(就像您所做的那样):

p->x = 2;
p->y = 5.6;

下面是 *p 的用法示例 - 即取消引用指针:

#include <stdio.h>
#include <stdlib.h>

struct something {
    int x;
    float y;
};

int main(void) {
    struct something *p;

    p = malloc(sizeof *p);

    p->x = 2;
    p->y = 5.6;

    struct something s;
    s = *p;                         // dereference p and copy into s

    free(p);

    // now check s:
    printf("%d, %.1f\n", s.x, s.y); // prints 2, 5.6
}