struct中的指针

sat*_*ttu 0 c struct pointers

我有以下情况.我的目标是使a和b这样两者都指向相同的记忆.但条件是它们都是指针.我该怎么做?

struct myStruct
{
struct anotherStruct* anoStrct;
};
main()
{
   struct myStruct *a=( struct myStruct*)malloc(sizeof( struct myStruct));
   struct myStruct *b=( struct myStruct*)malloc(sizeof( struct myStruct));
   a=b;


}
Run Code Online (Sandbox Code Playgroud)

Gan*_*esh 6

你可以为一个指针,例如分配空间,a

struct myStruct *a= malloc(sizeof( struct myStruct));
Run Code Online (Sandbox Code Playgroud)

并将此指针指定为bas

struct myStruct *b = a;
Run Code Online (Sandbox Code Playgroud)

编辑:当您复制指针并将其用于某些操作时,您还必须小心复制,即复制是浅拷贝还是深拷贝.请参考深拷贝和浅拷贝之间有什么区别?更多细节.

在上述代码段,如果下面的语句初始化后执行ba,你会遇到一个段错误的原始指针已被释放.

free(b);
a->anoStrct = malloc(sizeof(struct anotherStruct));
Run Code Online (Sandbox Code Playgroud)

  • 您不需要投射malloc,请参阅http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc (4认同)