5886 次
2 に答える
4
問題は、の2番目のパラメータが「非定数データへの定数ポインタへのポインタ」であるということexecvp
です。「定数データへのポインタへのポインタ」である、を渡そうとしています。char * const *
const char **
これを修正する方法は、char **
の代わりに使用することですconst char **
(「ポインターからX」はconst
、どのタイプXに対しても、常に「ポインターからX」に変換できるため(ただし、ポインターの最上位レベルでのみ):
char* p[10];
p[0] = ...;
// etc.
パラメータを挿入する必要がある場合は、変更しない限りconst char *
、パラメータをキャストできることに注意してください。関数ファミリーchar *
への引数は非として宣言されていますが、それらを変更することはありません(POSIX 2008仕様を参照)。そこでの理論的根拠は、それらが非として宣言される理由を説明しています。exec*
const
const
于 2012-10-18T18:25:33.963 に答える
4
を使用できますchar *p[10]
。
分解すると、char *const *p
「非定数文字の定数ポインタへの非定数ポインタ」を意味します。つまり、p
書き込み可能、p[0]
書き込み不可、およびp[0][0]
書き込み可能です。
于 2012-10-18T18:25:41.007 に答える