繁体   English   中英

指向 struct 的指针,这甚至是指向 struct 的指针吗?

[英]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 的地址。 而且这种技术是有效的,它是如何知道 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的指针。 这就是整个故事。

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

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

是的ptr是指向结构的指针。

额外的一件事:-

malloc可能无法为请求提供服务,它可能会返回空指针。 最好对此进行检查以防止以后尝试取消引用空指针。 如果您取消引用 NULL 指针,则它是未定义的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM