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

Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задача "Кто старше?" (подскажите где ошибка в коде) http://www.cyberforum.ru/cpp-beginners/thread1213395.html
Здравствуйте!подскажите где может быть ошибка, на сайте показывает частичное решение, Условие: Программа принимает три числа: возраст Антона, возраст Бориса и возраст Виктора. Определите, кто из...
C++ Реализация алгоритма сжатия JPEG помогите пожалуйста! после завтра диплом уже защищать, а я ни на шаг не могу сдвинуться с этой прогрммой(( нужно написать на С++ алгоритм сжатия изображения JPEG. http://www.cyberforum.ru/cpp-beginners/thread1213376.html
C++ Баг в реализации Хаффмана
Здравствуйте, дорогие форумчане. Тут такой вопрос - алгоритм почему-то "теряет" последнюю букву в тексте, если его размер очень мал. Например, если на вход подается "Raiden", то после сжатия и...
C++ Привести код в рабочее состояние
Здравствуйте! Есть задание в котором нужно ввести информацию о такси (номер, стоимость, вид транспорта) и так же позволяющий удалить указанный номер такси. не дали вот такой код. Как его можно...
C++ Написать программу, которая выводит на экран предложения согласно заданию http://www.cyberforum.ru/cpp-beginners/thread1213345.html
Добрый день . Вот такая вот програмка: Написать программу, которая считывает текст из файла и выводит его на экран, после каждого предложения добавляя, сколько раз встретилось в нем заданная с...
C++ Вывести строку, содержащую символы заданной строки, между которыми вставлено по одному пробелу Что то вот на решал, немного вроде не так посмотрите оцените пожалуйста; /* Дана непустая строка S . Вывести строку, содержащую символы строки , между которыми вставлено по одному пробелу. */... подробнее

Показать сообщение отдельно
Croessmah
Эксперт CЭксперт С++
13221 / 7493 / 845
Регистрация: 27.09.2012
Сообщений: 18,413
Записей в блоге: 3
Завершенные тесты: 1
22.06.2014, 20:21
Цитата Сообщение от Trwsdf Посмотреть сообщение
//указатель на этот указатель и есть указатель на массив.
Характерная черта массива как типа - известность его размера и в int (*p)[3] создается именно указатель на массив определенного размера, интерпретируя его как тип. Проверим банальной перегрузкой:
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
32
#include <iostream>
void foo( int (*p)[5] )
{
   std::cout << "void foo( int *p[5] )" << std::endl ;
}
 
void foo( int (*p)[3] )
{
   std::cout << "void foo( int *p[3] )" << std::endl ;
}
 
void foo( int * p )
{
   std::cout << "void foo( int * p )" << std::endl ;
}
 
 
void foo( int ** p )
{
   std::cout << "void foo( int ** p )" << std::endl ;
}
int main( )
{
    int * p1 = 0 ;
    int ** p2 = 0 ;
    int (*p3)[3] = 0 ;
    int (*p4)[5] = 0 ;
    foo(p1) ;
    foo(p2) ;
    foo(p3) ;
    foo(p4) ;
}
Никаких нареканий - все указатели имеют разный тип(даже если указана разная размерность массива). Хоть массив это и просто кусок памяти, но интерпретировать его можно по разному.

P.S. Указатели не указывают на элементы массива, они указывают просто на память определенного типа, будь там указател int ** pp или "статический" массив int (*p)[N]
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru