скопировать три массива в 2 тусклых массива в C - PullRequest
0 голосов
/ 19 марта 2019

Я хочу скопировать три 1dim массива в 2dim массив (матрицу).

double ary2A[4] = { 0.1, 1.1, 2.1, 3.1 };
double ary2B[4] = { 0.2, 1.2, 2.2, 3.2 };
double ary2C[4] = { 0.3, 1.3, 2.3, 3.3 };

double ary1[3][4];

Итак, теперь я хочу скопировать ary2A, ary2B, ary2C в ary1. Как я могу сделать это с Pointern ??

Мой первый шаг был:

(*ary1)[4] = *ary2A;

Но это неправильно, потому что я сказал, что адрес из первого блока ary1 - это значение 0.1 .. И если я скажу

(*ary1)[4] = ary2A;

Я стал ошибкой: «присвоение 'double' из несовместимого типа 'double [4]'"

Как я могу решить эту проблему ?? Я хочу проверить принцип ..

1 Ответ

2 голосов
/ 19 марта 2019

ary1[0] = ary2A; будет хранить ary2A по индексу 0 из ary1. Не компилировать

ary1[1] = ary2B; будет хранить ary2B по индексу 1 из ary1. Не компилировать

и т.д.

Две проблемы в вашем коде:

  • Вы храните массив double в double
  • Вы индексируете индекс 4 в массив размером 4, вы вышли за пределы.

Если вы хотите создать реальную копию массива, вам нужно выполнить копию в памяти. Вы могли бы сделать:

memcpy(ary1[0], ary2A, sizeof(double) * 4);

Это скопирует байты 4 double с ary2A в ary1[0].

memcpy(ary1[1], ary2B, sizeof(double) * 4);

Это скопирует байты 4 double с из ary2B в ary1[1].

и т.д ...

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