Форум программистов, компьютерный форум 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", то после сжатия и разжатия будет "Raide". Либо в редких случаях бывает даже добавление буквы в конец разархивированного сообщения. Отладка и гугление пока что ничего не дали. Прошу вашей помощи. Вот код #include <iostream>...
C++ Привести код в рабочее состояние
Здравствуйте! Есть задание в котором нужно ввести информацию о такси (номер, стоимость, вид транспорта) и так же позволяющий удалить указанный номер такси. не дали вот такой код. Как его можно привести в рабочее состояние? enum Ttransport{bus, car, van}; struct marshrut { int nomer; float vartist; Ttransport transport; };
C++ Написать программу, которая выводит на экран предложения согласно заданию http://www.cyberforum.ru/cpp-beginners/thread1213345.html
Добрый день . Вот такая вот програмка: Написать программу, которая считывает текст из файла и выводит его на экран, после каждого предложения добавляя, сколько раз встретилось в нем заданная с клавиатуры буква. Кто может помочь с языка С переделать её в С++ вот вариант на С: #include <stdio.h> #include <stdlib.h> int main(void) {
C++ Вывести строку, содержащую символы заданной строки, между которыми вставлено по одному пробелу Что то вот на решал, немного вроде не так посмотрите оцените пожалуйста; /* Дана непустая строка S . Вывести строку, содержащую символы строки , между которыми вставлено по одному пробелу. */ #include <iostream> #include <conio.h> main() { char string; int code,i,j; while(1){ подробнее

Показать сообщение отдельно
Trwsdf
Заблокирован
24.06.2014, 15:46     Правильно ли реализовано удаление элемента из массива и совершен вызов деструктора?
Цитата Сообщение от Croessmah Посмотреть сообщение
Характерная черта массива как типа - известность его размера и в int (*p)[3] создается именно указатель на массив определенного размера, интерпретируя его как тип.
1 Почитал. Ну что тут скажешь.
В С и С++ размерность С массива всегда передается отдельным числом. Поэтому конструкция вида char * - получается, для него не указатель на массив, ибо там не указана размерность. Удивительно отчего он с ним тогда работает как с массивом в коде, но это его проблемы.

2 int (*p)[3][3] - это такой же указатель как и int** p, но с ограничениями, поддерживаемыми компилятором и запрещающим его приведение с простому указателю.
Речь шла о другом, а именно, что указателей на массив не существует. Как можно сразу указывать на все элементы массива? Привожу пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//строгие указатели
    int init[2][2][2]={{{1,2},{3,4}},{{5,6},{7,8}}};
    int init2[2]={1,2};
 
    int (*p)[2][2][2] =&init;   
 
    cout<<(***p)[2]<<endl;//3
    cout<<(*(init+1))[1][0]<<endl;//7
    cout<<***init<<endl; //1
    cout<<****p<<endl; //1
 
    int *** p1=(int***)init; //0x1 -oops, всегда 1.
    int *p2=(int*)init2; //корректно
 
    cout<<*p2<<endl;
    cout<<p2[1]<<endl;
    
    //нестрогие
    int ** array; 
    //матрица
    array = (int **)malloc(5 * sizeof(int *));
    for(int i = 0; i < 5; i++)
        array[i] = (int *)malloc(5 * sizeof(int));
все массивы представляют собой указатели на один первый элемент массива, а не на весь массив, посему не существует указателей на массив.
 
Текущее время: 22:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru