【问题标题】:C Programming - passing variable argument to opendirC 编程 - 将变量参数传递给 opendir
【发布时间】:2011-12-03 17:13:54
【问题描述】:
我正在尝试这样做:
const char *p = "/home/paul";
dp = opendir(*p);
但失败并出现以下错误:
传递 'opendir' 的参数 1 使指针从没有 a
演员表
我在这里不知所措,据我所知,我正在尝试的是完全有效的。毕竟,我将 const char 传递给输入为 const char 的函数。
我做错了什么?
【问题讨论】:
标签:
c
variables
arguments
opendir
【解决方案1】:
opendir() 函数接受 const char * 参数,但您发送给它的是 const char。 *pdereferencesp所指向的值,返回数组的第一个字符,即“/”。所以*p 的结果是const char 值“/”。
p 然而是 const char *,所以将其更改为:
dp = opendir(p);
【解决方案2】:
你的代码失败了,因为你是间接通过 p:
dp = opendir(*p);
因为 opendir 将 char * 作为参数,并且您告诉 opendir 在 p 指向的位置查找该 char *,所以 opendir 使用 "/home/paul" 作为其 char *。
但是 p 是 opendir 想要的确切值。相反,说:
dp = opendir(p);
一切都会像玻璃一样光滑。
【解决方案3】:
const char *p = "/home/paul";
dp = opendir(*p);
声明 const char *p = "/home/paul";意味着 'p' 指向字符串的开头,其中 p 本质上是字符串所在的内存地址。
当你写*p时,表示你正在访问的内容是p指向字符串中的第一个字符,即'/'