Присваивание значения массива тому же массиву - C (СИ)

Формулировка задачи:

В общем, в ходе решения одной задачи обнаружилась проблема. Если присваивать массиву значение того же массива, только в другой точке, то он начинает вести себя довольно странно. Краткий пример:
#include <stdio.h>
#include <stdlib.h>
 
int main() {
    double tr1[3][1];
    scanf("%lf %lf %lf", &tr1[1][0], &tr1[2][0], &tr1[3][0]);
        printf ("1: 1=%lf, 2=%lf, 3=%lf \n", tr1[1][0],tr1[2][0],tr1[3][0]);
        tr1[1][1]=tr1[2][0];
        tr1[2][1]=tr1[1][0];
        printf ("2: 1=%lf, 2=%lf, 3=%lf \n", tr1[1][0],tr1[2][0],tr1[3][0]);
   return (0);
}
Вводим:
1 2 3
Получаем
1: 1=1.000000, 2=2.000000, 3=3.000000 
2: 1=1.000000, 2=2.000000, 3=1.000000
То есть, переменная tr1[3][0] получила значение tr1[1][0] хотя её вообще не трогали. Если использовать разные массивы то проблема решается, но мне очень хочется понять почему так происходит что бы избежать возможных ошибок в будущем.

Код к задаче: «Присваивание значения массива тому же массиву - C (СИ)»

textual
tr1[2][1]=tr1[1][0]

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

12   голосов, оценка 4.250 из 5


СОХРАНИТЬ ССЫЛКУ