我正在尝试这样做:
const char *p = "/home/paul";
dp = opendir(*p);
但这失败并出现以下错误:
传递 'opendir' 的参数 1 使指针从整数而不进行强制转换
我在这里不知所措,据我所知,我正在尝试的是完全有效的。毕竟,我将 const char 传递给输入为const char的函数。我究竟做错了什么?
您的代码失败,因为您正在通过 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 指向的内容,它是字符串中的第一个字符,即 '/'