二进制*的操作数无效(有'char *'和'char **')错误

时间:2014-01-03 05:47:54

标签: c

我编写了如下简单程序。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

char* alphabate[]={
  (char *)"xyz",
  (char *)"abc",
  (char *)"pqr",
  NULL
};

void main()
{
    char **pp;

    for( pp=alphabate; *pp; pp++ )
    {
        printf("\n alphabate member %s" *pp);
    }
}

但是当我在我的Linux机器上编译它时,它会在printf()语句中显示以下错误。

test.c:19: error: Invalid operands to binary *  ( have 'char *' and 'char **' )

有什么想法解决它?

5 个答案:

答案 0 :(得分:3)

printf("\n alphabate member %s" *pp);

应该是

printf("\n alphabate member %s", *pp);

答案 1 :(得分:3)

,

之后的printf中使用printf("\n alphabate member %s",*pp);
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>

    char* alphabate[]={
        (char *)"xyz",
        (char *)"abc",
        (char *)"pqr",
        NULL
        };

    int main()
    {
        char **pp;

     for( pp=alphabate; *pp; pp++ )
     {
          printf("\n alphabate member %s",*pp);
     }
      return 0;
    }          

答案 2 :(得分:2)

    printf("\n alphabate member %s" *pp);

你在* pp

之前缺少一个逗号

答案 3 :(得分:2)

printf中的字符串后面有一个逗号丢失。一定是

 printf("\n alphabate member %s", *pp);

使用您的代码,*被解释为乘法。

答案 4 :(得分:1)

将字符串文字强制转换为char *是多余的。 C中main的签名也应该是:

int main(void)

int main(int argc, char *argv[])

您在printf功能中缺少逗号。它应该是

printf("\n alphabate member %s", *pp);