C++将struct属性设置为自己的地址

an *_*wig 1 c++ struct

我对C/C++有些新意,所以假设我有一个简单的结构:

struct item {
   int* address;
   std::string name;
}
Run Code Online (Sandbox Code Playgroud)
  1. 是否int*有正确的数据类型来保存内存地址?
  2. 我可以使用类似的东西:

    item i;
    i.address = &i.;
    

    要将structs属性设置为它自己的地址?

rut*_*sky 5

  1. 在C/C++中输入指针.你可以在任何指针中存储任何其他指针(因为它只是内存中字节的索引),但你无法自由转换它们(你需要使用强制转换).通常,指向变量类型的指针T应具有类型T *.所以在你的例子应该是:

    struct item {
       std::string * address;
       std::string name;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 是的你可以:

     item i;
     i.address = &(i.name);
    
    Run Code Online (Sandbox Code Playgroud)

这是如果你想存储会员的地址name.

如果要存储结构地址:

struct item {
   item * address;
   std::string name;
}

item i;
i.address = &i;
Run Code Online (Sandbox Code Playgroud)