Присваивание значения массива тому же массиву - 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]
В данном коде нет других элементов, поэтому список не содержит дополнительных пунктов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д