Получение одномерных массивов из двумерного массива

У меня есть массив как

int outer[4][3] = {
    { 1, 2, 3 },
    { 2, 3, 5 },
    { 1, 4, 9 },
    { 10, 20, 30 }
};

и я хотел бы получить указатель / массив для n-го одномерного массива внутри outer, что-то вроде

void foo () {
    printf("%d %d %d\n", outer[1][0], outer[1][1], outer[1][2]);
    int inner[3] = outer[1]; /* Is there some way to do this assignment? */
    printf("%d %d %d\n", inner[0], inner[1], inner[2]);
    /* so that this line gives the same output as the first */
}

Конечно, это возможно с помощью математики указателей, но я чувствую, что есть некоторый синтаксис для этого, который я забыл.

1 ответ

Решение

Для указателя на массив объявить inner как указатель на массив из 3 int

int (*inner)[3] = &outer[1]; 


Если вы хотите указатель на первый элемент массива outer[1] затем

int *inner = outer[1];  

сделаю работу. Вы также можете сделать

int *inner = &outer[1][0];
Другие вопросы по тегам