6 / 6 / 0
Регистрация: 10.10.2012
Сообщений: 140
|
|
1 | |
Расскажите популярно про ссылки и указатели04.01.2013, 16:05. Показов 8836. Ответов 110
Метки нет (Все метки)
Помогите разобраться со ссылками и указателями на различные объекты. Запутался вообще в них полностью. Когда читаю книгу про них, то вроде все понятно написано, но примеров для меня видимо не достаточно, что бы как то их различать. В итоге начинаю решать задачи и ни чего не выходит.
0
|
04.01.2013, 16:05 | |
Ответы с готовыми решениями:
110
Популярно объясните про указатели Пояснить про указатели и ссылки Что нужно знать про указатели и ссылки? Подскажите хорошую статью про указатели и ссылки |
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
05.01.2013, 13:59 | 41 |
1
|
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
|
|
05.01.2013, 14:01 | 42 |
taras atavin, хотя да, ты прав ,это адрес, меня смутило что он очень похож у меня на содержимое
0
|
6 / 6 / 0
Регистрация: 10.10.2012
Сообщений: 140
|
||||||
05.01.2013, 14:10 [ТС] | 44 | |||||
Всем большое спасибо Теперь про указатели на char буду иметь всегда во внимании.
А на массив ссылку я правильно сделал?
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
||||||
05.01.2013, 14:16 | 45 | |||||
gomodril, имя статического массива почти тоже самое, что и константный указатель. Как отдельной переменной, этого указателя не существует в программе, нельзя взять его адрес. Но можно использовать для присваивания другим указателям.
Добавлено через 1 минуту В Вашем примере Вы берете не адрес массива, а адрес его первого элемента. Можно было бы просто написать
0
|
6 / 6 / 0
Регистрация: 10.10.2012
Сообщений: 140
|
|
05.01.2013, 14:21 [ТС] | 46 |
Задание которое я делал в данном примере. Напишите следующие объявления - массив из 10 целых, ссылка на массив 10 целых. Проинициализируйте все объекты и организуйте вывод на консоль.
Вот я теперь и ломаю голову - правильно я сделал или нет. Т.к. хочу усвоить хорошо тему со ссылками и указателями.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
05.01.2013, 14:23 | 47 |
0
|
6 / 6 / 0
Регистрация: 10.10.2012
Сообщений: 140
|
|
05.01.2013, 14:24 [ТС] | 48 |
Все правильно, можно было и так написать и было бы это - указатель на начальный элемент (неявное преобразование), но вопрос тут меня мучает следующий - просили ссылку на массив, а я написал указатель, правильно я сделал или нет? И как будет правильно.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
05.01.2013, 14:31 | 49 |
Не первого, а нулевого и это одновременно адрес всего массива.
Добавлено через 1 минуту Даже не представляю себе синтаксис именно ссылки на целый массив.
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
05.01.2013, 14:35 | 50 |
taras atavin, первого элемента, а не нулевого. Первый элемент с нулевым индексом. Это разные вещи. Счет идет с единицы, индексация в C++ идет с 0.
gomodril, никаких неявных преобразований, эти записи идентичны. По сути любой массив это последовательность байт, и можно лишь взять адрес начала этой последовательности. Нельзя сделать ссылку на массив. Думаю, задание немного некорректно, и Вы сделали именно то, чего от Вас хотели.
0
|
6 / 6 / 0
Регистрация: 10.10.2012
Сообщений: 140
|
||||||
05.01.2013, 14:38 [ТС] | 51 | |||||
А если это сделать следующим образом:
Добавлено через 1 минуту Это задание из книги Язык программирования С++ Специальное издание БИНОМ Издание 2010
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
05.01.2013, 14:39 | 52 |
gomodril, это будет ссылка на первый элемент массива, а не на сам массив.
1
|
6 / 6 / 0
Регистрация: 10.10.2012
Сообщений: 140
|
|||||||||||
05.01.2013, 16:35 [ТС] | 53 | ||||||||||
В общем сделал я так:
Добавлено через 1 час 50 минут По заданию нужно написать указатель на массив строк.
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
||||||
05.01.2013, 16:42 | 54 | |||||
Это не указатель на массив строк. А массив указателей на строковые литералы. А строковые литералы являются константами. Поэтому верная запись будет выглядеть вот так:
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||
05.01.2013, 16:42 | 55 | |||||
Ссылка есть синоним, а нулевой элемент только находится по адресу всего массива, но всему массиву не синонимичен. Значение указателя - адрес, а адреса совпадают, поэтому
0
|
Croessmah
|
05.01.2013, 16:44
#56
|
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
05.01.2013, 16:51 | 57 |
Например, по-английски, first floor (первый этаж) - это тот, который сразу над ground floor, но ground floor - нифига не подвальный этаж, а самый нижний этаж над уровнем грунта. Так что порядковые номера не очень то определены, у англичан 0 - вполне натуральное число. А индексы однозначны.
Добавлено через 2 минуты Согласно языку.
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
05.01.2013, 16:57 | 58 |
Причем тут этажи на английском? Люди ведут счет с единицы. 1 апельсин, 2 апельсина и так далее. А в C++ индексация идет с 0. Просто, видать, посчитали, что так логичнее, так как для первого элемента не нужно делать никаких смещений. Для второго уже нужно сделать смещение на 1 элемент и тд. В любой нормальной книге объясняется, что первый элемент имеет индекс 0.
0
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
||||||
05.01.2013, 17:03 | 60 | |||||
А англичане уже не люди? 0 может быть натуральным числом.
Добавлено через 4 минуты Но указатель - не сам массив.
Добавлено через 1 минуту Не путай номер с количеством, апельсин может быть пятнадцатым из миллиарда.
0
|
05.01.2013, 17:03 | |
05.01.2013, 17:03 | |
Помогаю со студенческими работами здесь
60
Расскажите про new и delete в C++ Расскажите пожалуйста про флаги Расскажите на пальцах про классы Расскажите про IDE Intel Parallel Studio XE 2015 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |