2

我假设这个警告正在使我的应用程序崩溃。我正在将 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 偏移?

我在这里缺少什么?我以为我现在知道指针了。:(

谢谢你。

4

2 回答 2

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];
于 2010-12-28T17:08:06.137 回答
1

指针不是数组,数组不是指针

search_positions被定义为“2 s 的 6 个数组的 4 个数组的数组int”。这形成了一个“6 个 2 ssearch_positions[current_orientation]数组的数组”。 该数组可以隐式转换为指针,但这只会给您一个指向 2 s ( ) 数组的指针。这是与您正在使用的“指向 ' 的指针的指针”不同的类型,并且两者之间没有合适的转换。int
intint (*)[2]int

为了克服这个问题,你可以声明these_search_positions

int (*these_search_positions)[2] = search_positions[current_orientation];
于 2010-12-28T17:18:31.050 回答