1

私はこれをやろうとしています:

const char *p = "/home/paul";
dp = opendir(*p);

しかし、それは次のエラーで失敗します:

「opendir」の引数1を渡すと、キャストなしで整数からポインターが作成されます

私が試みていることが完全に有効であることを知っている限り、私はここで途方に暮れています。結局のところ、入力が const char である関数に const char を渡します。私は何を間違っていますか?

4

3 に答える 3

6

関数は引数opendir()を受け入れますが、 . が指す値を逆参照し、配列の最初の文字 " " を返します。したがって、 の結果は値 " " です。const char *const char*p p/*pconst char/

pただしであるconst char *ため、次のように変更します。

dp = opendir(p);
于 2011-10-08T20:35:48.370 に答える
0

p: を介して間接的に行っているため、コードは失敗しています。

dp = opendir(*p);

opendir は引数として char * を取り、p が指している場所でその char * を探すように opendir に指示しているため、opendir はその char * として「/home/paul」を使用しています。

しかし、p は opendir が必要とする正確な値です。代わりに、次のように言います。

dp = opendir(p);

すべてがガラスのように滑らかになります。

于 2011-10-08T20:37:28.730 に答える
0
const char *p = "/home/paul";
dp = opendir(*p);

宣言 const char *p = "/home/paul"; 「p」が文字列の先頭を指していることを意味します。ここで、p は本質的に文字列があるメモリ内のアドレスです。

*p と書くと、文字列の最初の文字である p が指す場所、つまり「/」のコンテンツにアクセスしていることを意味します。

于 2011-10-08T20:48:52.917 に答える