我的代码中有这个警告:
从不兼容的指针类型初始化[默认启用]
代码如下:
/*
* 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
}
有什么问题?我怎样才能解决这个问题? 谢谢。测试方法不相关,是一个样本。
答案 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/上的“指针和数组”。