2013-12-18 38 views
0

指针变种的指针变量的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个值。这可以通过循环完成吗?

在此先感谢!

+1

当您尝试此操作时发生了什么? –

+1

当你命名你的变量A和B然后说:“我如何在C中执行memset'信息? –

+0

为什么在一个未初始化的指针上调用'memset',除非你在其他地方初始化它(在这种情况下,最好在你的问题中明确提到这一点)。如果'malloc'是int的某处,为什么不使用'calloc',它会自动初始化内存到0 –

回答

1

当你定义一个结构时,你实际上正在创建一个用户定义的数据类型。在上面的代码中,A是数据类型,a是该类型的变量。 B和B也一样。

a.b -> Info是你应该如何通过A访问信息,你的情况。 .运算符用于使用普通结构变量(非指针)访问stuct的成员。如果您定义了类型A的指针x,那么然后您应该使用x->b->Info

你可以从这里了解C结构:

http://www.tutorialspoint.com/cprogramming/c_structures.htm

+0

它有助于记住'a-> b'等于'(* a).b' – Thomas

+1

我犯的错误是malloc错过了。因此,当一个空指针被访问时,那段代码崩溃了。感谢输入!! – user3115584

1

以正确的顺序定义ab并初始化它们:

struct B 
{ 
    int * Info; 
} b = { 
    NULL; 
    }; 

struct A 
{  
    B * b; 
} a = { 
    &b 
    }; 

现在a.b->infoNULL

相关问题