不兼容的指针类型char **和char *错误

时间:2012-10-24 01:13:27

标签: c pointers

void decimal2binary(char *decimal, char *binary) {   
    //method information goes here    
}

这是主要的

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来获取数据(我被问到的方式)还有其他方法吗?

1 个答案:

答案 0 :(得分:8)

data的声明更改为:

char data[100];

您不需要一个指向数组char的指针数组,这就是您现在声明的代码。你只需要一个字节数组。我相信你的困惑源于这样一个事实:虽然数组不是指针,但它们在作为函数参数传递时会衰减成指向数组第一个元素的指针。因此,只需说出decimal2binary(temp, data);,就会传递指向data的第一个元素的指针,在这种情况下,您需要指向char的指针,而不是{{1} }}