Форум программистов, компьютерный форум 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 использованием динамических массивов Вычислить площадь трапеции. Написать программу с использованием динамических массивов, вводя размер массива с клавиатуры. подробнее

Показать сообщение отдельно
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.11.2015, 10:41     Почему при присваивании адреса массива не ставится знак '&' получения адреса
Цитата Сообщение от Aqua77 Посмотреть сообщение
&a[5] - это адрес 6-го элемента а *(a+5) Значение элемента?
Да. Только для исключения путаницы, предпочтительнее писать не "6-го элемента", а "элемента с индексом 5", имхо.
Цитата Сообщение от Aqua77 Посмотреть сообщение
компилятор зная что один элемент типа int содержит 4 байта умножает 4 на 5.
Снова да Именно поэтому опасно в указателе на базовый класс хранить адрес начала массива класса производного.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
 
struct B {
    int i;
};
 
struct D : B {
    int j;
};
 
int main()
{
    D d[3];
    
    d[0].i = 1;
    d[0].j = 2;
    
    d[1].i = 3;
    d[1].j = 4;    
    
    d[2].i = 5;
    d[2].j = 6; 
    
    B* b = d; 
 
    std::cout << b[0].i << std::endl; // 1, ok
 
    std::cout << b[1].i << std::endl; // 2, но хотели бы 3
    
    std::cout << b[2].i << std::endl; // 3, но хотели бы 5   
}
http://coliru.stacked-crooked.com/a/d3dd451d7731aee2
 
Текущее время: 04:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru