У меня есть функция:
int exploreDIR (char stringDIR[], char arguments[6][100])
{
/*stuff...*/
execv(filePath, arguments);
}
Однако я получаю warning: passing argument 2 of ‘execv’ from incompatible pointer type
Если execv ожидает char* const argv[]
в качестве второго аргумента, почему я получаю это предупреждение?
Поскольку массивы — это, по сути, то же самое, что и указатели на начало массива, в чем здесь критическая разница между char arguments[][]
и char* const argv[]
?
execv(filePath, arguments);
,arguments
должно быть завершено NULL, ноarguments[6][100]
не может быть завершено NULL, посколькуarguments[i]
является допустимым адресом! = NULL - person Grijesh Chauhan   schedule 15.10.2013char* str[]
иchar str[][]
и как они хранятся в памяти? - person Grijesh Chauhan   schedule 15.10.2013argument[0]....argument[4]
), даже тогдаargument[5]
не равно NULL, это будет действительный адрес с strlen = 0, прочитайте ответ, который я связал. - person Grijesh Chauhan   schedule 15.10.2013