2012-10-24 67 views
1
void decimal2binary(char *decimal, char *binary) { 
    //method information goes here  
} 

这是主要的不兼容的指针类型字符**与char *错误

int main(int argc, char **argv) { 

char *data[100]; 
if (argc != 4) { 
    printf("invalid number of arguments\n"); 
    return 1; 
} 
if (strcmp(argv[1] , "-d")) { 

    if (strcmp(argv[3] , "-b")) { 
     decimal2binary(temp, data); 
    } 
    } 
} 

现在我得到这个错误

 warning: passing argument 2 of ‘decimal2binary’ from incompatible pointer type [enabled by default] 

    note: expected ‘char *’ but argument is of type ‘char **’ 

所以说,他们是不兼容的类型,但我必须使用argv来获取数据(我被问到的方式)有没有其他方法?

+0

接受Json的答案,如果它适合你。 ;) Json给出了正确的解释 – Vishal

回答

8

变化data简单的声明:

char data[100]; 

为你的代码代表,现在你不需要指针数组键入char,这是你声明的内容。你只需要一个字节数组。我相信你的困惑源自这样一个事实:虽然数组不是指针,但当作为函数参数传递时,它们会衰减为指向数组第一个元素的指针。因此,通过简单地说decimal2binary(temp, data);,您传递的是指向第一个元素data的指针,在这种情况下,您需要指向char而不是char*

+0

噢好了,修复了我的代码。非常感谢!!' – Nabmeister