¿Suscribir punteros indistintamente con una matriz 2D en Objective-C?

Tengo una matriz declarada estáticamente como esta Cell SMatrix_A[36][10]. Cuando uso SMatrix_A directamente en mi código (Cell foo = SMatrix_A[12][8]), todo funciona bien. Sin embargo, lo que realmente quiero es declarar varias de estas matrices (SMatrix_A, SMatrix_B, etc.) y luego tener una variable de puntero que cambie entre ellas en tiempo de ejecución.

Me imagino un código como este (suponiendo que SMatric_A, B, C ya están declarados y todo esto está en el mismo alcance de archivo):

Cell *curMatrix = SMatrix_B;
Cell foo,bar;
...
foo = curMatrix[13][2];

El compilador me da un: Incompatable pointer types assigning 'Cell*' from 'Cell[36][10]' en la asignación inicial a curMatrix. Pensé que referirme a una variable de matriz sin subíndices me daría un tipo de puntero con el valor como la primera ubicación de la matriz.

¿Solo me falta un yeso o algo?

preguntado el 25 de agosto de 12 a las 21:08

1 Respuestas

Mi respuesta anterior es totalmente incorrecta, ¡así que le daré otra oportunidad!

#import <Foundation/Foundation.h>

typedef int matrix_t[3][3];

matrix_t matrix = { { 1, 2, 3}, { 4, 5, 6}, { 7, 8, 9} };

int main(int argc, char *argv[])
{
    matrix_t *matrixPtr = &matrix;

    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            NSLog(@"%i", (*matrixPtr)[i][j]);
        }
    }
    return 0;
}

Debe escribir su tipo de matriz 2D (es probable que sea una buena idea para que su SMatrix_A, SMatrix_B tengan el mismo tamaño). Luego puede crear punteros a él como de costumbre. Tenga en cuenta que debe eliminar la referencia del puntero antes de indexarlo.

Respondido 26 ago 12, 16:08

Ahora eso suena mejor, +1. Mientras tanto, elimine su respuesta incorrecta; recuperará la reputación -2 :) - user529758

¡Eh! Supe esto en algún momento, pero dejé de pensar porque asumí que Objective-C era de alguna manera diferentes matrices wrt o typedefs. Sigo olvidando que puedo hacer trucos regulares de C con él. ¡Debería haber recordado que necesito typedefs para cualquier cosa más complicada que una matriz 1d! - kbyrd

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.