Kao*_*oet 12 c++ pointers const exec char
我看到的时候正在研究linux C++编程
int execve(const char *path,
char *const argv[],
char *const envp[]);
Run Code Online (Sandbox Code Playgroud)
我不明白是什么char *const argv[]
.我知道char *const foo
是一个指向char的const指针.并且const char *foo
是一个指向const char的指针.但是什么char *const argv[]
?
它是char的const指针数组还是const char的指针数组?
我有一个vector<string>
现在,如何将其转换为char *const argv[]
?
Mar*_*ork 31
它是char的const指针数组还是const char的指针数组?
从右到左读取类型:
const总是绑定到左边(除非它在左边)
char *const argv[]
^^ Array of
^^^^^ const
^ pointer to
^^^^ char
Run Code Online (Sandbox Code Playgroud)
"const pointer"
char 的数组
因此无法修改数组中的指针.
但他们指出的可以修改.
注意:正如史蒂夫在下面指出的那样.因为这被用作参数.它实际上衰减为"指向"const pointer"
char 的指针"或"char*const*".
我现在有一个vector <string>,如何将它转换为char*const argv []?
int execve(const char *path,
char *const argv[],
char *const envp[]);
int main()
{
std::vector<std::string> data; /// fill
std::vector<char*> argv;
std::vector<char*> envp;
for(std::vector<std::string>::iterator loop = data.begin(); loop != data.end(); ++loop)
{
argv.push_back(&(*loop)[0]);
}
// I also bet that argv and envp need to be NULL terminated
argv.push_back(NULL);
envp.push_back(NULL);
execve("MyAppName", &argv[0], &envp[0]);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10842 次 |
最近记录: |