我試圖做到這一點: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。 我在做什麼錯?
我試圖做到這一點: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。 我在做什麼錯?
opendir()
函數接受一個const char *
參數,但是您發送一個const char
。 *p
dereferencesp
指向的值,並返回數組中的第一個字符,即「/
」。所以*p
的結果是const char
值「/
」。
p
但是一個const char *
,所以它改成:
dp = opendir(p);
您的代碼失敗,因爲你到p會間接:
DP =執行opendir(* P);
由於opendir將char *作爲參數,並且您要告訴opendir在p指向的位置查找該char *,opendir使用「/ home/paul」作爲它的char *。
但是p是opendir想要的確切值。相反,說:
dp = opendir(p);
一切都會像玻璃一樣光滑。
const char *p = "/home/paul";
dp = opendir(*p);
聲明const char * p =「/ home/paul」;意味着'p'指向字符串的開始,其中p基本上是字符串所在的內存中的地址。
當你寫* p表示你正在訪問p點的內容,這是字符串中的第一個字符,即'/'