[英]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.