指针变种的指针变量的memset我有2个struct
S:如何进行结构这是另一种结构的用C
struct A
{
B *b;
}a;
struct B
{
int* Info;
} b;
如何用C执行信息的memset
?
memset((a->b->Info,0,sizeof(int));
信息必须是memset
用0.这必须完成34个值。这可以通过循环完成吗?
在此先感谢!
指针变种的指针变量的memset我有2个struct
S:如何进行结构这是另一种结构的用C
struct A
{
B *b;
}a;
struct B
{
int* Info;
} b;
如何用C执行信息的memset
?
memset((a->b->Info,0,sizeof(int));
信息必须是memset
用0.这必须完成34个值。这可以通过循环完成吗?
在此先感谢!
当你定义一个结构时,你实际上正在创建一个用户定义的数据类型。在上面的代码中,A是数据类型,a是该类型的变量。 B和B也一样。
a.b -> Info
是你应该如何通过A访问信息,你的情况。 .
运算符用于使用普通结构变量(非指针)访问stuct的成员。如果您定义了类型A的指针x
,那么然后您应该使用x->b->Info
。
你可以从这里了解C结构:
它有助于记住'a-> b'等于'(* a).b' – Thomas
我犯的错误是malloc错过了。因此,当一个空指针被访问时,那段代码崩溃了。感谢输入!! – user3115584
以正确的顺序定义a
和b
并初始化它们:
struct B
{
int * Info;
} b = {
NULL;
};
struct A
{
B * b;
} a = {
&b
};
现在a.b->info
是NULL
。
当您尝试此操作时发生了什么? –
当你命名你的变量A和B然后说:“我如何在C中执行memset'信息? –
为什么在一个未初始化的指针上调用'memset',除非你在其他地方初始化它(在这种情况下,最好在你的问题中明确提到这一点)。如果'malloc'是int的某处,为什么不使用'calloc',它会自动初始化内存到0 –