kbi*_*irk 3 c++ pointers casting stdvector
如果有可能将std :: vector <>强制转换为双指针,我想知道是出于好奇.
我从来没有遇到过以这种方式将std :: vector作为指针传递的问题:
std::vector<char> myCharVector;
myCharVector.push_back('a');
myCharVector.push_back('b');
myCharVector.push_back('c');
char *myCharPointer = &myCharVector[0];
Run Code Online (Sandbox Code Playgroud)
所以我很好奇是否有可能以类似的方式分配指针的地址:
char *myPointer = "abc";
char **myDoublePointer = &myPointer;
Run Code Online (Sandbox Code Playgroud)
我试过了:
char **myDoublePointer = (char**)&myCharVector;
Run Code Online (Sandbox Code Playgroud)
但它不起作用.有没有办法实现这个目标?
你已经知道这&myCharVector[0]是一个指针char.所以如果你把它存储在一个变量中:
char *cstr = &myCharVector[0];
Run Code Online (Sandbox Code Playgroud)
然后你可以获取该变量的地址:
char **ptrToCstr = &cstr;
Run Code Online (Sandbox Code Playgroud)
但只需解除引用两次,如下所示:
char **ptrToCstr = &(&myCharVector[0])
Run Code Online (Sandbox Code Playgroud)
无效,因为该值(&myCharVector[0])尚未存储在内存中.