2015-11-22 4 views
0

Если у меня есть массив 4x4 с именем M [4] [4], который инициализируется ко всем нулям, как мне изменить значения узлов первой строки позже в программе?Как перенести первую строку в 2D-массив?

Я спрашиваю потому, что при инициализации матрицы, один только должен сделать:

int M[4][4] = {{1, 2, 3, 4}}; 

Но если я это делать в другом месте в коде, он не работает.

Должен ли я просто использовать цикл для достижения своей цели, или я делаю что-то неправильно?

+0

есть массивное различие между «инициализации переменной» и «присваивание переменной» Есть много вещей, которые могут выполняться «enmassie» при инициализации переменной, которая не может быть выполнена при присвоении значения переменной. – user3629249

ответ

3

Ну, для этого вам не нужна специальная функция, вы можете использовать memcpy.

double M[2][4] = { {0.1, 0.2, 0.3, 0.4}, {1.2, 1.1, 1.0, 1.4} }; 
memcpy(M, (const double[4]){1.2, 1.1, 1.0, 1.4}, sizeof(double)*4); 

В случае, если вы удивитесь, как вы можете написать вторую строку:

double M[2][4] = { {0.1, 0.2, 0.3, 0.4}, {1.2, 1.1, 1.0, 1.4} }; 
memcpy(&M[1][0], (const double[4]){1.2, 1.1, 1.0, 1.4}, sizeof(double)*4); 
+0

Хороший ответ! Я отказался от своего предложения, предлагая функцию, чтобы сделать это, поскольку я думаю, что это намного лучше. –

Смежные вопросы