从std :: vector <>转换为双指针?

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)

但它不起作用.有没有办法实现这个目标?

jap*_*iss 8

你已经知道这&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])尚未存储在内存中.