Ich gehe davon aus, dass diese Warnung meine App abstürzt. Ich verwende objective-c für eine iOS App. Xcode gibt keine Stack-Trace oder irgendetwas. Nicht hilfreich.Initialisierung von inkompatiblen Zeigertyp Warnung. Ich kann das Problem nicht finden
Ich habe diese Aufgabe als eine globale Variable:
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
};
Würde nicht search_positions daher ein Zeiger auf einen Zeiger auf einen Integer-Zeiger sein?
Warum gibt dies "Initialisierung von inkompatiblem Zeiger"?
int ** these_search_positions = search_positions[current_orientation];
Sicherlich braucht dies nur einen Zeiger auf einen ganzzahligen Zeiger aus dem Array, offseted durch current_orientation?
Was fehlt mir hier? Ich dachte, ich wüsste jetzt schon Hinweise. :(
Danke
Okay, danke erklären könnte. Ich denke, ich erinnere mich jetzt ... Es wäre einfacher, wenn Arrays nur Zeiger wären. Sie können Arrays durch Zeiger machen (Denken Sie nur an malloc), warum kann es nicht umgekehrt sein? –
@Matthew Mitchell: Arrays _aren'_ nur Zeiger. Das ist eine fundamentale Tatsache von C. Wenn du willst, dass sie gleich sind, würde es bedeuten, den einen oder anderen aufzugeben. Was würden Sie bevorzugen: keine Zeiger oder keine Arrays? Ich denke, dass das Fehlen von beiden zu einer stark verkrüppelten Sprache führen würde. –
Nun, Sie können einen Zeiger auf ein Array (nicht ein Array offenbar. Vielleicht eine Menge?) Von weiteren Zeigern oder Daten haben. Sie können dies mit malloc tun. Sie können auf Daten in diesen Pointer-Arrays oder auf andere Weise mit der gleichen quadratischen Brake-Syntax zugreifen. Es macht es für mich verwirrender. –