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但是a const char *,因此将其更改为:

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

您的代码失败,因为您正在通过 p 间接:

dp = opendir(*p);

因为 opendir 将 char * 作为参数,并且您告诉 opendir 在 p 指向的位置查找该 char *,所以 opendir 使用“/home/paul”作为它的 char *。

但是 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 回答