Присваивание значения массива тому же массиву - C (СИ)
Формулировка задачи:
В общем, в ходе решения одной задачи обнаружилась проблема. Если присваивать массиву значение того же массива, только в другой точке, то он начинает вести себя довольно странно. Краткий пример:
Вводим:
Получаем То есть, переменная tr1[3][0] получила значение tr1[1][0] хотя её вообще не трогали. Если использовать разные массивы то проблема решается, но мне очень хочется понять почему так происходит что бы избежать возможных ошибок в будущем.
#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
Решение задачи: «Присваивание значения массива тому же массиву»
textual
Листинг программы
tr1[2][1]=tr1[1][0]
Объяснение кода листинга программы
В данном коде выполняется присваивание значения массива tr1[1][0] элементу массива tr1[2][1].
Список элементов кода:
tr1[2][1]=tr1[1][0]- присваивание значения массиваtr1[1][0]элементу массиваtr1[2][1]В данном коде нет других элементов, поэтому список не содержит дополнительных пунктов.