C中的指针未按预期工作

时间:2014-11-15 23:44:27

标签: c arrays pointers char

好的,这是守则的重要部分。这只是一段摘录。

在steuer.c中:

static char (*pointer)[8];

extern void test(char *pointer[]); // im not sure, whether this calling is correct

int main(void)
{
    int i;
    check = malloc(sizeof(*pointer) *10);
    for(i=0;i<100;i++)
        test(check[1]);
    ...
}

在compute.c中:

void test(char * compute[])
{
    char temp="test";
    if(strcmp(compute, temp) == 0)
        return 1;
    else
        return 0;
}

问题是:预期»char **«但参数类型为»char *

由于

2 个答案:

答案 0 :(得分:0)

问题是你已声明test采用char*[]参数 - 一个字符指针数组,也就是一个字符串数组。

在两个文件中都清楚你将它用作字符指针 - char* - 因此应该只是一个字符串。

您需要将void test(char * compute[])更改为void test(char *compute),以便这些类型正常运行。 (您还希望在其他声明中进行相同的更改。)

答案 1 :(得分:-1)

...样品

static char (* pointer)[8];

void test1(char * pointer){ ; }
void test2(char (* pointer)[8]){ ; }

int main(void){
    char (*check)[8] = malloc(sizeof(*pointer) *10);

    test1(&check[0][0]);
    test2(check);

    return 0;
}