2011-10-08 33 views
1

我試圖做到這一點:C程序設計 - 傳遞變量參數執行opendir

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

但失敗,出現以下錯誤:

passing argument 1 of 'opendir' makes pointer from integer without a cast

我不知所措我在這裏,爲據我所知,我試圖完全有效。畢竟,我將const char傳遞給輸入的函數是const char。 我在做什麼錯?

回答

6

opendir()函數接受一個const char *參數,但是您發送一個const char*pdereferencesp指向的值,並返回數組中的第一個字符,即「/」。所以*p的結果是const char值「/」。

p一個const char *,所以它改成:

dp = opendir(p); 
0

您的代碼失敗,因爲你到p會間接:

DP =執行opendir(* P);

由於opendir將char *作爲參數,並且您要告訴opendir在p指向的位置查找該char *,opendir使用「/ home/paul」作爲它的char *。

但是p是opendir想要的確切值。相反,說:

dp = opendir(p);

一切都會像玻璃一樣光滑。

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

聲明const char * p =「/ home/paul」;意味着'p'指向字符串的開始,其中p基本上是字符串所在的內存中的地址。

當你寫* p表示你正在訪問p點的內容,這是字符串中的第一個字符,即'/'