私はこれをやろうとしています:
const char *p = "/home/paul";
dp = opendir(*p);
しかし、それは次のエラーで失敗します:
「opendir」の引数1を渡すと、キャストなしで整数からポインターが作成されます
私が試みていることが完全に有効であることを知っている限り、私はここで途方に暮れています。結局のところ、入力が const char である関数に const char を渡しています。私は何を間違っていますか?
p: を介して間接的に行っているため、コードは失敗しています。
dp = opendir(*p);
opendir は引数として char * を取り、p が指している場所でその char * を探すように opendir に指示しているため、opendir はその char * として「/home/paul」を使用しています。
しかし、p は opendir が必要とする正確な値です。代わりに、次のように言います。
dp = opendir(p);
すべてがガラスのように滑らかになります。
const char *p = "/home/paul";
dp = opendir(*p);
宣言 const char *p = "/home/paul"; 「p」が文字列の先頭を指していることを意味します。ここで、p は本質的に文字列があるメモリ内のアドレスです。
*p と書くと、文字列の最初の文字である p が指す場所、つまり「/」のコンテンツにアクセスしていることを意味します。