【问题标题】: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指向字符串中的第一个字符,即'/'

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-09-21
          • 1970-01-01
          • 2015-09-23
          • 2015-01-05
          • 2021-07-28
          • 2015-07-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多