Создание массива 2d массивов - PullRequest
2 голосов
/ 03 сентября 2010

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

double foo[][2] = { {1.0,3.0}, {2.6,10.0}, {0.0,0.0} };
double bar[][2] = { {1.4,3.2}, {2.1,9.9}, {2.1,9.9}, {2.1,9.9}, {0.0,0.0} };

Итак, оба типа:

double (*)[2]

Я хочу создать их массив, поэтому мне нужно объявить массив указателей типа на массив [2]

double ((*array)[2])[] = {foo, bar};

Этот синтаксис не работает - возможно ли это сделать в C.

Я также пытался создать тип, но это тоже не сработало:

typedef double *mytype[2] ;
mytype array[] = {foo, bar};

Ответы [ 3 ]

3 голосов
/ 03 сентября 2010

Два массива не относятся к типу double(*)[2].foo имеет тип double [3][2], а bar имеет тип double [5][2].Внешний размер массива подразумевается, а не отсутствует.

Чтобы создать их массив, используйте их в качестве указателей, таким образом:

typedef double (*mytype)[2];
mytype array[] = { foo, bar };
2 голосов
/ 04 сентября 2010

Правильный синтаксис, чтобы сделать это без typedef:

double (*array[])[2] = {foo, bar};
0 голосов
/ 03 сентября 2010
double ((*array)[2])[] = {foo, bar};

Это не работает, потому что область памяти bar не относится к области памяти foo, а тип foo и bar не совпадает с типомэлементов double (*)[2], которые должны быть типа double.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...