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

Решение задачи: «Присваивание значения массива тому же массиву»

textual
Листинг программы
tr1[2][1]=tr1[1][0]

Объяснение кода листинга программы

В данном коде выполняется присваивание значения массива tr1[1][0] элементу массива tr1[2][1]. Список элементов кода:

  1. tr1[2][1]=tr1[1][0] - присваивание значения массива tr1[1][0] элементу массива tr1[2][1] В данном коде нет других элементов, поэтому список не содержит дополнительных пунктов.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.25 из 5
Похожие ответы