指向结构的指针,这甚至是指向结构的指针吗?

Pointer to struct ,is this even a pointer to struct?

我有一个结构,里面有变量。 现在我需要动态分配内存,所以最初我使用

Struct struct-name *a =Null; 

后来,我会分配内存给它使用malloc,然后我使用

a[0].variableA=allocate , a[0].variableB=allocate.

我的问题是,这甚至是一个指向结构的指针,因为我没有给出结构的地址。而且这种技术有效,它如何知道 struct 的地址。当我没有使用“&”明确给出结构的地址时。我知道这可能很愚蠢,但我很困惑。谢谢。

Struct st
{
 int a ;
int b;
}
Struct a *ptr=NULL;

主要

    ptr=malloc(sizeof(struct st)*2);
    //Assume array of size 2 is created 
Now I can use 
    ptr[0].a=10;

即使没有明确给出结构地址,我该如何使用。

问题是您不了解 malloc 的工作原理。 (你提到我会用malloc分配内存给它)

struct struct_name *a = NULL;
a = malloc(sizeof *a);
...

计算 struct struct_name 在内存中占用的字节数,然后从 malloc 请求那么多字节 并将结果(即刚刚使用 malloc 创建的内存块 的 起始地址分配给 名为 a 的指针。这就是整个故事。

现在您将在确保它没有 return NULL 后访问它。无需将 & 地址应用于任何 struct struct_name 变量实例。

在您的情况下,ptr 用于访问动态分配的不同结构实例 - 地址在哪里?指向第一个实例的地址包含在 ptr 中。然后您使用 ptr[0]ptr[1] 到达该结构实例。然后你访问了它。

And yes ptr is a pointer to struct.

额外的一件事:-

malloc 可能无法为请求提供服务,它可能 return 一个空指针。这是很好的 检查这个以防止以后尝试取消引用空指针。如果您取消引用 NULL 指针,则它是未定义的行为。