Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.94/34: Рейтинг темы: голосов - 34, средняя оценка - 4.94
25 / 25 / 19
Регистрация: 13.07.2015
Сообщений: 433

Почему при присваивании адреса массива не ставится знак '&' получения адреса

22.11.2015, 21:01. Показов 7997. Ответов 88
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
int main()
{
    int a[2] = { 2, 3 };
    int* b;
    b = a; //Почему при присваивании адреса массива не ставится знак '&' получения адреса.
//А когда присваиваешь адрес отдельной переменной, то необходимо ставить этот знак.
//int a=2;
    int* b;
    b = &a;//
}
И ещё адрес массива из пяти элементов передаст указателю все пять элементов? От адреса первого [0] до адреса последнего [4]. То есть, после такого присвоения указатель будет иметь все 5 адресов?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.11.2015, 21:01
Ответы с готовыми решениями:

Операция получения адреса & и vector
Здравствуйте. Работает ли Операция получения адреса (&) в векторе? Просто есть пример в книги, но про вектор ничего не сказано....

1. Ввести символьный массив. Найти адреса всех парных его элементов. 2. Вывести адреса элементов массива 4 на 4, находящ
Помогите пж... 1. Ввести символьный массив. Найти адреса всех парных его элементов. 2. Вывести адреса элементов массива 4 на 4,...

Почему разные адреса одного и того же элемента динамического массива?
Я создаю динамический массив и отправляю его в функцию, если потом сравнивать адреса элементов массива в главной и вызываемой функции они...

88
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
24.11.2015, 17:24
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Croessmah Посмотреть сообщение
У объекта один тип.
Да, это тип 0. Каждый объект принадлежит как минимум одной категории: один объект и одни морфизм Id.

Цитата Сообщение от Croessmah Посмотреть сообщение
Никаких конфликтов, потому что 0 - int
Никаких конфликтов, потому что есть определённые правила выбора перегруженной функции.

Тип определяется только тем, какие выражения являются верными над объектом.

Любое натуральное число -- целое. Любой массив -- указатель.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
24.11.2015, 17:29
Цитата Сообщение от mporro Посмотреть сообщение
Любой массив -- указатель.
лишь преобразовывается в него.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
24.11.2015, 17:35
Цитата Сообщение от Croessmah Посмотреть сообщение
У объекта один тип.
Класс один. А типов может быть несколько. Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct A {};
struct B {};
struct C : A, B {};
 
void f(A&) {}
void f(B&) {}
 
int main()
{
    C c; // класс C; типы A,B,C
    f(c); // неоднозначаность, т.к. подходит и A, и B
}
Цитата Сообщение от Croessmah Посмотреть сообщение
Никаких конфликтов, потому что 0 - int
Веселье начинается когда ожидаешь, что f(NULL) вызовет версию для указателя, а вызывается для целого.
Кликните здесь для просмотра всего текста
nullptr спасет отца русской демократии
0
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
24.11.2015, 17:35
неявно
Цитата Сообщение от Croessmah Посмотреть сообщение
преобразовывается в него
То есть, состоит в отношении является.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
24.11.2015, 17:48
http://stackoverflow.com/quest... e-pointers

Цитата Сообщение от Tulosba Посмотреть сообщение
Класс один. А типов может быть несколько.
вернемся
The term object type refers to the type with which the object is created.
0
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
24.11.2015, 17:52
Croessmah
Pointers are not arrays. Именно это в действительности разобрано по ссылке.

Стандарт написан не только для тех, кто использует язык, но и для тех, кто реализует компиляторы, потому в стандарте есть детали реализации, в которые программисты, по существу, даже не должны лезть.
В частности для программиста нет разницы между неявным преобразованием и отношением является. Для тех, кто производит компиляторы разница есть. Им нужно решать -- есть ли необходимость создавать новый объект, когда можно, а когда нельзя применить оптимизацию.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
24.11.2015, 18:02
Цитата Сообщение от mporro Посмотреть сообщение
В частности для программиста нет разницы между неявным преобразованием и отношением является.
ага, а потом они бегают по форуму с вопросами почему не ставится и почему размер не тот
0
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
24.11.2015, 18:06
Цитата Сообщение от Croessmah Посмотреть сообщение
а потом они бегают по форуму с вопросами почему
По этой причине всем новичкам C++ стоит говорить, что массив это вообще не int a[5], а классы из <valarray> или <array>. А за int a[5] бить по рукам линейкой.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
24.11.2015, 18:12
Цитата Сообщение от Croessmah Посмотреть сообщение
вернемся
Так-то да (прям как объекты из Стандарта и от Саттера ).
Но с точки зрения ООП терминологии типов может быть несколько.
http://stackoverflow.com/a/769399/3240681

Добавлено через 44 секунды
Цитата Сообщение от mporro Посмотреть сообщение
массив это вообще не int a[5], а классы из <valarray> или <array>
Но-но-но. Палехче!
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
24.11.2015, 18:15
Цитата Сообщение от Tulosba Посмотреть сообщение
Но с точки зрения ООП терминологии типов может быть несколько.
Тогда уж любой объект - это последовательность байт
0
24.11.2015, 18:17

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
любой объект - это последовательность байт
Да, да! Я всегда говорил это!:)

0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
24.11.2015, 18:23
Цитата Сообщение от Croessmah Посмотреть сообщение
Тогда уж любой объект - это последовательность байт
Так и есть
An object is a region of storage.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
24.11.2015, 18:26
Цитата Сообщение от Tulosba Посмотреть сообщение
Так и есть
еще
The object representation of an object of type T is the sequence of N unsigned char objects taken up by the object of type T, where N equals sizeof(T). The value representation of an object is the set of bits that hold the value of type T.
0
24.11.2015, 18:35

Не по теме:

Ага. А человек - набор из мяса, костей и ведра кровищи. А не какой-то там индивидуум. :)

0
24.11.2015, 18:40

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
А человек - набор из мяса, костей и ведра кровищи.
мясо, кости, кровь - это составные типы :)

0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
24.11.2015, 19:14
Новичкам надо говорить правду и вбивать им в голову, что есть стандарт, отладчик и ассемблерный код
(тут, правда, ассемблер не нужен, но иногда нужно к ассемблеру прибегать).

Вот им говорят, что имя массива - это указатель на его первый элемент, а он смотрит в отладчик и видит, что что-то не так. Кредит доверия отладчику резко упал, все отладчики стали говном, новичок им не верит, несет всякую чушь и задает тупые вопросы. (компиляторы у него ошибаются, отладчики бредят, только сам он умен, знаете ли, но почему-то там где-то косяк и тут где-то косяк и туча этих таких косяков. Надо задать вопрос, ведь объяснят лучше чем отладчик, стандарт и ассемблер. Чужое время, оно же гроша ломанного не стоит. Пусть на него любимого тратят свое. А все из мелочей пришло. Такие скользкие, неприятные мелочи. Недоговоренности, ошибочности).

(Я тоже жертва подобных неточностей).

У ТС вообще вопроса бы не возникло, если бы ему изначально было вдолблено, что тут неявное приведение. Что имя массива - всего-лишь идентификатор, некая сущность, которая даже переменной-то не является, но умеет становиться указателем на адрес своего начала и при необходимости становится им, потому что это стандартом оговорено.
Миниатюры
Почему при присваивании адреса массива не ставится знак '&' получения адреса  
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
24.11.2015, 20:54
daslex,
Из 2015 студии.
1
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
24.11.2015, 21:04
ну там значит область памяти типизирована
на моем скрине не типизирована.
неодназначность, а так как это студия, то даже стандарт ничего не расскажет. Товарищи из Microsoft, похоже тоже запутались.
___________
у меня тоже 2015 (pro).
0
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
25.11.2015, 07:23
Цитата Сообщение от Tulosba Посмотреть сообщение
Из 2015 студии.
Точка останова на присвоении. так что в p еще ничего не записано.
0
2688 / 2260 / 244
Регистрация: 03.07.2012
Сообщений: 8,231
Записей в блоге: 1
25.11.2015, 07:38
Небольшой пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void fa(int a[2])   {   cout<<sizeof(a);    }
void fp(int* p)     {   cout<<sizeof(p);    }
int main()
{
    int i;
    int A[2];
    int *p=A;
    cout<<sizeof(A);
    cout<<sizeof(p);
    p=new int[5];
    cout<<sizeof(p)<<endl;
    fa(A);
    fa(p);
    fp(A);
    fp(p);
    return 0;
}
sizeof() при передаче массива, как параметра, возвращает размер указателя
Миниатюры
Почему при присваивании адреса массива не ставится знак '&' получения адреса  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.11.2015, 07:38

Почему адреса элементов массива находятся в памяти не по порядку
Приветствую! Подскажите пожалуйста почему адреса элементов массива находятся в памяти не по порядку? почему и где происходит изменение...

Ошибка получения ip-адреса
Всем доброго времени суток) Возникла проблема, вот, собственно она: имеется стационарник с прямым подключением к интернету, к нему через...

Определить тип получения IP-адреса
Доброго дня. Подскажите пожалуйста: Необходимо определить, получен ли ip адрес по DHCP или прописан вручную. Надо парсить вывод команды...

Почему при редактировании ip-адреса NetworkManager создаёт второе соединение?
На Ubuntu Sevrer 16.04 LTS поставил NetworkManager. Включил его. Перезагрузил. Отредактировал ip-адрес. Перезагрузил. Смотрю, две...

Получения адреса объекта вызвавшего события
Всем доброго дня уважаемые форумчане. Ситуация в следующим, во время выполнения программы динамически создаются кнопке на форме...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru