从不兼容的指针类型初始化[默认启用] - 什么是错误的?

时间:2013-12-28 19:59:13

标签: c

我的代码中有这个警告:

  

从不兼容的指针类型初始化[默认启用]

代码如下:

/*
* Method return some number :-)
* It is TEST METHOD
*/
int check(char array[]) {

        int num = 0; // my number

        char **elem_p = array; // test

        while (*elem_p) { // it is while

            num++;
            elem_p++;

        }
        return num; // my return
    }

有什么问题?我怎样才能解决这个问题? 谢谢。测试方法不相关,是一个样本。

3 个答案:

答案 0 :(得分:11)

  

有什么问题?

array的类型为char *(指向char的指针),但您正在使用它初始化char **(指向char的指针)类型变量elem_p

  

我该如何解决这个问题?

使指针和指针(要指向的对象)彼此兼容。将elem_p声明为char *;

char *elem_p = array; 

答案 1 :(得分:1)

char array[]将被重写为char* array。您需要char* array[]char** array,但函数声明没有区别。你可能打算只有一个星号,正如haccks指出的那样。

char* array[]) {

        int num = 0; // my number

        char **elem_p = array; // test

答案 2 :(得分:0)

我认为你的意思是char *elem_p = array;。有关详细信息,请参阅http://www.cplusplus.com/doc/tutorial/pointers/上的“指针和数组”。