I’m studying linux C++ programing when I see
int execve(const char *path,
char *const argv[],
char *const envp[]);
I don’t understand what is char *const argv[] . I know char *const foo is a const pointer to char. And const char *foo is a pointer to a const char. But what’s char *const argv[]?
Is it an array of const pointers to char or an array of pointers to const char?
And I have a vector<string> now, how to convert it to char *const argv[]?
Read types right to left:
const always binds to the left (unless it is on the very left)
An array of
"const pointer"to charSo the pointers in the array can not be modified.
But what they point at can be modified.
Note: As pointed out by Steve below. Because this is being used as a parameter. It actually decays to a “A pointer to
"const pointer"to char” or “char* const *”.