我假设这个警告正在崩溃我的应用程序。我正在使用objective-c作为iOS应用程序。 Xcode不提供堆栈跟踪或任何东西。没用。
我将此作业作为全局变量:
int search_positions[4][6][2] = {{{0,-2},{0,1},{1,-1},{-1,-1},{1,0},{-1,0}}, //UP
{{-2,0},{1,0},{-1,1},{-1,-1},{0,1},{0,-1}}, //LEFT
{{0,2},{0,-1},{1,1},{-1,1},{1,0},{-1,0}}, //DOWN
{{2,0},{-1,0},{1,1},{1,-1},{0,1},{0,-1}} //RIGHT
};
因此search_positions不是指向整数指针的指针吗?
为什么这会给出“从不兼容的指针初始化”?
int ** these_search_positions = search_positions[current_orientation];
当然这只是一个指向数组的整数指针的指针,由current_orientation所取代?
我在这里缺少什么?我以为我现在知道了。 :(
谢谢。
答案 0 :(得分:4)
search_positions[current_orientation]
不属于int**
类型;它的类型为int[6][2]
。 search_positions
不是指针;它是一个数组。
如果您获取数组的地址,则指向search_positions[current_orientation]
的指针将为int(*)[6][2]
类型:
int (*these_search_positions)[6][2] = &search_positions[current_orientation];
或类型int(*)[2]
如果你不取数组的地址而是让数组到指针的转换发生:
int (*these_search_positions)[2] = search_positions[current_orientation];
答案 1 :(得分:1)
指针不是数组,数组不是指针
search_positions
被定义为'包含2个int
s的6个数组的4个数组的数组。这使search_positions[current_orientation]
成为包含2个int
s'的6个数组的数组
这个数组可以隐式转换为指针,但这只会给你一个指向2 int
s(int (*)[2]
)数组的指针。这是与您使用的“指向int
”的指针不同的类型,两者之间没有合适的转换。
要解决此问题,您可以将these_search_positions
声明为
int (*these_search_positions)[2] = search_positions[current_orientation];