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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В каждом столбце динамической матрицы поменять местами первый отрицательный элемент и последний нулевой http://www.cyberforum.ru/cpp-beginners/thread1589538.html
Написать программу в динамическом двумерном массиве: В каждом столбце двумерного массива поменять местами первый отрицательный элемент и последний нулевой.
C++ Перемножить двумерные массивы Написать программу в двумерном динамическом массиве: Даны два двумерных массива. Перемножить их как матрицы. Результат записать в третий массив. http://www.cyberforum.ru/cpp-beginners/thread1589535.html
C++ Найти наибольшее количество идущих подряд букв в тексте
Добрый вечер помогите пожалуйста Дан текст найти наибольшее количество идущих подряд букв
ООП: указатель на объект C++
Всем привет. Подскажите пожалуйста как сделать указатель (набор дочерних тематических блоков (указатели на объекты Topic)).Читал про unique_ptr но через него у меня не получается. Само задание: Объявите и реализуйте класс Topic, моделирующий тематический блок лекции: в объекте Topic необходимо хранить следующие данные: название блока (строка); количество слайдов (целое число); набор...
C++ Найти индекс максимального элемента массива http://www.cyberforum.ru/cpp-beginners/thread1589516.html
Добрый вечер помогите пожалуйста в одномерном массиве состоящем из n целых элементов вычислить номер максимального элемента массива
C++ Вычислить площадь трапеции c использованием динамических массивов Вычислить площадь трапеции. Написать программу с использованием динамических массивов, вводя размер массива с клавиатуры. подробнее

Показать сообщение отдельно
Байт
Эксперт C
15841 / 10168 / 1522
Регистрация: 24.12.2010
Сообщений: 19,171
22.11.2015, 21:57     Почему при присваивании адреса массива не ставится знак '&' получения адреса
Цитата Сообщение от Aqua77 Посмотреть сообщение
Почему при присваивании адреса массива не ставится знак '&' получения адреса
Массив - он уже сам адрес.
Упрощенно так. int mass[2] создает кусок памяти для хренения 2-х целых и переменную - адрес этой памяти. (эксперты, возможно. скажут, что это не совсем так, но тебе лучше сейчас представлять дело именно таким образом). Так что mass - это уже указатель(адрес). Присваивание int *b = mass имеет дело с сущностями одной природы.
Цитата Сообщение от Aqua77 Посмотреть сообщение
//А когда присваиваешь адрес отдельной переменной, то необходимо ставить этот знак.
Надеюсь, из вышеизложенного все уже понятно.
Цитата Сообщение от Aqua77 Посмотреть сообщение
И ещё адрес массива из пяти элементов передаст указателю все пять элементов?
Конечно нет! Он дает указатель только на первый элемент (адрес, где начинается массив). А про его длину он ничего не знает и знать не хочет. И в этом все прелести и все опасности языка Си.
Цитата Сообщение от Aqua77 Посмотреть сообщение
То есть, после такого присвоения указатель будет иметь все 5 адресов?
Надеюсь, что ответ на этот вопро уже понятен. Но доступ ко всем пяти элементам построен.
*b, *(b+4), *(b+100) - а вот тут ты уже обращаешься неизвестно куда. И программа твоя крашится.
Кстати, надо понять, что &a[5] абсолютно тоже самое, что и *(a+5)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru