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

Указатели в двумерном массиве - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Литература для начинающих http://www.cyberforum.ru/cpp-beginners/thread20131.html
всех с НГ!))) посоветуйте что почитать человеку который с программированием на Вы а в частности по С++...
C++ Вопрос про статический массив Люди, у меня вопрос, подскажите пожалуйста почему я не могу создать статический массив(не важно какого типа) больше 1 мегабайта (в среднем)? К примеру, статический массив типа char из 1000 000... http://www.cyberforum.ru/cpp-beginners/thread20124.html
C++ Дан символьный файл f, содержащий сведения о сотрудниках учреждения
Дан символьный файл f, содержащий сведения о сотрудниках учреждения, записанные по следующему образцу: фамилия_имя_отчество,фамилия_имя_отчество,....Записать эти сведения в файле g, используя...
И снова числа Фибоначчи C++
Пожалуйсто помогите решить задачу, а то я уже убился с ней):" составить матрицу оброзованную из чисел Фибоначи по рядам( два первых числа =1)", матрица будет такая: 1 5 34 1 8 55 2 13 .. 3...
C++ Выделение памяти http://www.cyberforum.ru/cpp-beginners/thread20087.html
Какая разница между выделением памяти функциями malloc, calloc, realloc и оператором new? И как изменить размер выделенной памяти без потери текущих значений если память была выделена оператором new?...
C++ Найти сумму, разность, произведение и частное от деления первого числа на второе Даны два числа. Найтиих сумму, рахность, произведение и частное от деления первого числа на второе :help:, у меня просто небыло ни одного урока по C++, то есть я полный и 100% 0 подробнее

Показать сообщение отдельно
XuTPbIu_MuHTAu
Эксперт С++
2226 / 741 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
02.01.2009, 13:08
Feni}{,я тебе еще раз повторяю.От перемены мест слагаемых сумма не меняется. Эта строчка ничего не делает.

Поясню,как строится 2-мерный массив в памяти. Один из вариантов.
[0,0] [0,1] [0,2] ....... [0,n] [1,0] [2,0] ...... [2,n] ....... [n,0] [n,1] ... [n,n]
где запись [i,j] означает элемент на i-й строке j-го столбца.

Как ты должен понимать,память - штука одномерная,она как большая лента. Имитировать двумерность можно,например, записывая строки матрицы друг за другом в памяти. Тогда,чтобы попасть на начало i-й строки нужно сместиться относительно начала массива на i*n элементов.
А твоя запись *(mas + i+j) смещает на i+j элементов отн-но начала,как ты их ни меняй местами.Эта запись,кстати,полностью эквивалентна записи mas[i+j].Сам подумай,последний элемент,к которому ты обратишься будет иметь номер 2n, а у тебя их n^2.

P.S Можно с тем же успехом хранить друг за другом столбцы. Главное понимать,что ты вообще делаешь.
P.P.S Я хочу,чтобы ты взял бумагу,нарисовал "оперативную память" и подумал,как все это работает. В следующий раз хочу увидеть твой работающий код,а не вопрос или неправильное пояснение. Я пояснил принцип.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru