char * const argv []与char * argv和execv系统调用

时间:2019-11-20 05:36:51

标签: pointers execve


     int main(void)
        {
            int e;
            char *envp[] = {NULL};
            char *argv[] = {"/bin/ls", "-1",NULL};
            //char *argv[] = {"/bin/ls", "-1",NULL};
            argv[1]= "0";;
            //e =  execve("/bin/ls", argv, envp);
            return 0;
}

我已经使用了这段代码,但是根据execve的声明,它接受第二个参数作为指向char的const指针,但是我没有使用const就通过了,但它工作正常。为什么????

1 个答案:

答案 0 :(得分:0)

在C中,您始终可以将char*传递给接受const char*的函数,该函数是兼容/合法的分配。当然,您也可以传递const char*参数。但是通常,const第一个参数中的execve限定词只是说函数execve不会对其进行修改。

另请参阅以下相关文章:Why can't I pass a char ** to a function which expects a const char **?