Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

нужна подсказка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с массивом структур http://www.cyberforum.ru/cpp-beginners/thread252178.html
Всем привет!!! Пожаалусто помогите кому нетрудно))) Программирование задач с использованием файлов Условие задачи! Программа создает на диске массив записей с данными о программном обеспечении...
C++ borland c++ 3.1 dos Где можно скачать borland c++ 3.1 dos с поддержкой русского языка!. Добавлено через 5 минут Можно прикрепить файл установочник или дать ссылочку на скачивание файла. Добавлено через 3 минуты... http://www.cyberforum.ru/cpp-beginners/thread252161.html
Не запускаются программы(( C++
#include <iostream> #include <time.h> #include <locale.h> #include <stdlib.h> using namespace std; int main() { setlocale(LC_ALL,"Russian"); int k=0; const int n=6;
Вычислить сумму положительных нечетных элементов массива C++
Дана матрица состоящая из N,M целочисленных элементов. 1.Найти минимальный элемент 2.Вычислить сумму положительных нечетных элементов массива
C++ Описать структуру с именем MARSH http://www.cyberforum.ru/cpp-beginners/thread252138.html
Описать структуру с именем MARSH, содержащую следующие поля: BEGST — название начального пункта маршрута; TERM — название конечного пункта маршрута; NUMER — номер маршрута. 2. Написать...
C++ Шаблоны функций Привет всем, я новичок в С++, хо4у изучать этот язык, буду делать через VS 2008 прошу вас придумать какие нибудь не сильно сложные задачки для меня на темы: 1) Шаблоны функций 2)Что нибудь с... подробнее

Показать сообщение отдельно
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
05.03.2011, 03:45
Цитата Сообщение от dimon1984
и обьясните плиз, это получается str и str1 обращаются к одним и тем же данным в памяти? почему?
C++
1
str1[15] = 'c';
операция индексирования превращается в операцию с адресом
C++
1
*(str1 + 15) = 'c';
C++
1
*(15 + str1) = 'c';
поэтому работает даже так
C++
1
15[str1] = 'c';
через адрес можно переходить к любому участку памяти, просто прибавляя/отнимая к нему/от него число
соответственно, таким образом можно выйти за край массива
массивы по отношению друг к другу хранятся
в обратном порядке
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
using namespace std;
 
int main()
{
        char str[]  = "0123456789";
        char str1[] = "0123456789";
 
        str1[15] = 'c';
        cout << str << endl;
        cout << (void *) str1 << ' ' << (void *) str << endl;
        return 0;
}
Код
[guest@localhost tests]$ ./t
0123c56789
0xbff1c5fa 0xbff1c605
[guest@localhost tests]$
, поэтому при изменении второго меняется первый
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru