С Новым годом! Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Z3JheSBoYXQ=
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
1

Как происходит адресация в динамическом массиве

30.10.2012, 07:55. Показов 1026. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C
1
2
3
4
5
6
        char str1[]=" string";
    char str2[]="test result";
    int i=0,j=0;
    
    for(i=0,j=strlen(str2); i<strlen(str1); i++,j++)
          str2[j]=str1[i];
вывод: test result stringtring
откуда?

дебагер показывает возникновение символов, которые замещают при очередной итерации первые символы. Я не могу понять механизм, почему так происходит. При статике адресация работает как надо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.10.2012, 07:55
Ответы с готовыми решениями:

Как происходит адресация #include?
Допустим есть 4 файла: Файл sum.cpp который хранится к примеру в папке D:\source1; int sum(int x,...

Как исправить ошибку в динамическом массиве?
Задание таково: Дана целочисленная квадратная матрица размером NхN, найти такое k, что k-й рядок...

Как записать символы в динамическом массиве не подряд?
Здравствуйте! Вопрос наверное крайне глупый, но выходит ошибка. Задача такова, что нужно считать...

Как в динамическом массиве найти наибольшее значение?
Как в динамическом массиве найти наибольшее значение? srand(time(NULL)); int n = 0; cin &gt;&gt; n;...

4
284 / 157 / 30
Регистрация: 22.09.2012
Сообщений: 283
30.10.2012, 11:04 2
Вы выходите за границы str2
0
Z3JheSBoYXQ=
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
30.10.2012, 13:31  [ТС] 3
Что выходит за границы и так понятно, я же указал вопрос - адресация в динамическом массиве. Мне интерес механизм образования адреса, по которому при следующей итерации программа берет символ. Именно в рассматриваемом случае.
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
30.10.2012, 14:11 4
Что такое "динамический" массив? Ваши str1[] и str2[] после инициализации совершенно "обычные" массивы.
А адресация... работает как всегда..., просто как сказали выше, кто-то портит стэк.
Не видя полного кода, компилятора и опций сборки можно только гадать.
Например, после str2 в стеке вполне могут оказаться i и j, значения которых Вы успешно портите.
1
Диссидент
Эксперт C
27707 / 17325 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
30.10.2012, 15:39 5
Цитата Сообщение от fanatdebian Посмотреть сообщение
При статике адресация работает как надо.
Это совершенно случайно!
В общем, на лицо явная ошибка использования памяти, и ни один компилятор не обязан отчитываться, почему в одном режиме результат один, а другом - другой (даже если он случайно оказался ожидаемым)

Не по теме:

Любопытно, к чему такие эксперименты? Бихевиористический подход к изучению психологии компилятора и выявлению его комплексов? Да?

0
30.10.2012, 15:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2012, 15:39
Помогаю со студенческими работами здесь

Как переставить строки в динамическом двумерном массиве?
Нужно было написать программу, которая переставляет строки матрицы так, чтобы значения в столбце K...

Как узнать длину строки в динамическом двухмерном массиве?
Недавно, столкнулся с проблемой, что нужно определить количество символов в строке List'а, а не...

Как можно убрать последнее значение в динамическом массиве
Подскажите как можно убрать последнее значение в дин массиве (смотрите на скрине), показывает не...

Как поменять местами столбцы в двумерном динамическом массиве?
нужно столбцы с четными номерами поменять местами с нечетными, помогите исправить ошибку int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru