История изменений
Исправление SZT, (текущая версия) :
Сам преподаю Си на втором курсе студентам, которые уже знают Паскаль — этим нет никаких проблем объяснить, что за зверь «указатель на массив» (который int (*p)[15])
Тут еще проблема в дурацком синтаксисе. Ну посудите сами:
uint8_t n1[][2] = {{1,2}, {3,4}, {5,6}, {99,88}};
uint8_t n2[][2] = {{7,8}, {9,10}, {11,12}, {99,88}};
uint8_t n3[][2] = {{13,14}, {15,16}, {17,18}, {99,88}};
// Надо сделать массив из указателей на двумерные массивы
uint8_t (*ars[3])[2] = { n1, n2, n3}; // полная ерунда, нечитаемо. Как этот синтаксис объяснять студентам?
typeof( typeof(uint8_t [2]) *) ars2[3] = {n1, n2, n3}; // можно так
typeof( typeof(uint8_t [2]) *[3]) ars3 = {n1, n2, n3}; // можно еще так
typeof(uint8_t (*)[2]) ars4[3] = {n1, n2, n3}; // во, теперь норм!
typedef uint8_t u8pair_t[2]
u8pair_t n1[] = {{1,2}, {3,4}, {5,6}, {99,88}};
u8pair_t n2[] = {{7,8}, {9,10}, {11,12}, {99,88}};
u8pair_t n3[] = {{13,14}, {15,16}, {17,18}, {99,88}};
u8pair_t *(ars[]) = {n1, n2, n3};
А, еще можно через структурки
typedef struct { uint8_t ar[4][2];} arr;
arr n1 = {{{1,2}, {3,4}, {5,6}, {99,88}}};
arr n2 = {{{7,8}, {9,10}, {11,12}, {99,88}}};
arr n3 = {{{13,14}, {15,16}, {17,18}, {99,88}}};
arr ars[] = {n1, n2, n3};
Исходная версия SZT, :
Сам преподаю Си на втором курсе студентам, которые уже знают Паскаль — этим нет никаких проблем объяснить, что за зверь «указатель на массив» (который int (*p)[15])
Тут еще проблема в дурацком синтаксисе. Ну посудите сами:
uint8_t n1[][2] = {{1,2}, {3,4}, {5,6}, {99,88}};
uint8_t n2[][2] = {{7,8}, {9,10}, {11,12}, {99,88}};
uint8_t n3[][2] = {{13,14}, {15,16}, {17,18}, {99,88}};
// Надо сделать массив из указателей на двумерные массивы
uint8_t (*ars[3])[2] = { n1, n2, n3}; // полная ерунда, нечитаемо. Как этот синтаксис объяснять студентам?
typeof( typeof(uint8_t [2]) *) ars2[3] = {n1, n2, n3}; // можно так
typeof( typeof(uint8_t [2]) *[3]) ars3 = {n1, n2, n3}; // можно еще так
typeof(uint8_t (*)[2]) ars4[3] = {n1, n2, n3}; // во, теперь норм!
u8pair_t n1[] = {{1,2}, {3,4}, {5,6}, {99,88}};
u8pair_t n2[] = {{7,8}, {9,10}, {11,12}, {99,88}};
u8pair_t n3[] = {{13,14}, {15,16}, {17,18}, {99,88}};
u8pair_t *(ars[]) = {n1, n2, n3};
А, еще можно через структурки
typedef struct { uint8_t ar[4][2];} arr;
arr n1 = {{{1,2}, {3,4}, {5,6}, {99,88}}};
arr n2 = {{{7,8}, {9,10}, {11,12}, {99,88}}};
arr n3 = {{{13,14}, {15,16}, {17,18}, {99,88}}};
arr ars[] = {n1, n2, n3};