指向结构的指针,这甚至是指向结构的指针吗?
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 指针,则它是未定义的行为。
我有一个结构,里面有变量。 现在我需要动态分配内存,所以最初我使用
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 指针,则它是未定义的行为。