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

Понимание для чего вообще нужны указатели? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проблема с pow http://www.cyberforum.ru/cpp-beginners/thread382561.html
#include <iostream> #include <conio.h> #include <math.h> using namespace std; class Triangle { public: int a,b,c;
C++ Считать массив строк из файла Например есть файл in.txt, с него нужно считать массив строк в мемо, а в другом мемо записать эти же строки в ascii кодах, например: в файле: abc bcd def в первом мемо должно отобразиться то же самое что и в файле, а во втором их коды: 97 98 99 98 99 100 100 101 102 как реализировать такую функцию? заранее спасибо! http://www.cyberforum.ru/cpp-beginners/thread382557.html
глобал в библиотеке, не отображается в дебагере C++
Использую студию 2010, профешинал. Есть в статик библиотеке глобальная переменная, внутри этой библиотеке в дебагере ее поля вопросиками показываются, а хотя извлекается оттуда все нормально. Но очень мешает отлаживать. Мб кто встречал такие проблемы и знает решение. P.S. глобальная переменная является структурой.
C++ Очередь, С++
здраствуейте, помогите реализовать алгортитм :pardon: С++ , буду признателен =) Смоделировать очередь, в которой реализован такой механизм изъятия элемента из очереди: начало очереди всегда находится в первом элементе массива; при изъятии одного элемента из очереди, все остальные элементы перемещаются на одну позицию ближе к началу массива. После обработки всей заданной входной...
C++ Табуляция http://www.cyberforum.ru/cpp-beginners/thread382529.html
ПРивет всем передо мной стоит следующая задачка: Требуется вычислить значения yi заданной функции для ряда значений аргументов xi, i=1,…,N, при этом вычис-лив с точностью ε > 0 значения функций ряда согласно разложениям в степенные ряды. f=4/sin x + (ex – sin x)/cos x. Написал кой-чего, но работать не хочет. Помогите, а? #include <stdio.h> #include <conio.h> #include <math.h> double eps =...
C++ Дан текстовый файл f, содержащий буквы и целые числа. Выбрать все числа, которые делятся нацело на ... Дан текстовый файл f, содержащий буквы и целые числа. Выбрать все числа, которые делятся нацело на 2 и 4, но не делятся на 6. Записать эти числа в текстовый файл g, а все остальные числа – в текстовый файл h. подробнее

Показать сообщение отдельно
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
14.11.2011, 15:03     Понимание для чего вообще нужны указатели?
Цитата Сообщение от Bers Посмотреть сообщение
мина замедленного действия?
И в чём же мина? В невозможности удалить динамичский объект, созданный по ссылке? Так это при попытке запрета указателей.

Добавлено через 2 минуты
Цитата Сообщение от Bers Посмотреть сообщение
Упоротый алгоритм? Сама сущность? Или сам указатель, который оказался волшебным?
А что волшебного в выходе из видимости? Или в освобождении памяти только так:
C++
1
2
3
4
5
if (p)
{
 delete p;
}
p=NULL;
и так:
C++
1
2
3
4
5
if (Count)
{
 delete [] Data;
}
Count=0;
?

Добавлено через 2 минуты
Цитата Сообщение от Bers Посмотреть сообщение
Когда он может - сторонние механизмы не дадут. или когда хочет - обращение к памяти, которую кто то уже освободил. Крэш.
Специально?

Добавлено через 1 минуту
Цитата Сообщение от Bers Посмотреть сообщение
итого: пох на ивариант класса.
В любом классе с указателями есть деструкторы, там всё и делается, а посторонним писакам указатель из класса вообще не выдаётся, чтоб не освободили просто делитом и не выделили память в один нью/каллок/реааллок.

Добавлено через 39 минут
Цитата Сообщение от mc.Duck Посмотреть сообщение
Вообще, указатели в современное время почти ниодин уважающий себя программист не использует
Не избегает, так будет точнее. А не уважающий себя чайник не использует, думая что ссылки вместо указателей - это круто.

Добавлено через 1 минуту
Цитата Сообщение от mc.Duck Посмотреть сообщение
так как ныне памяти у компьютеров хоть отбавляй
потому и нужны.
Цитата Сообщение от mc.Duck Посмотреть сообщение
а путаницы с этими указателями ооочень много.
нет совсем.

Добавлено через 1 минуту
Цитата Сообщение от mc.Duck Посмотреть сообщение
C++
1
2
3
4
5
char *a = NULL; * * * * *//здесь объявляем переменную-указатель
for(int i=0;i<=9;i++) * *//цикл присваиваний значений
{
 a=new char[100];
}
бред. Никто в цикле не выделят пямять всё время по одному и тому же указателю. А выглядит это на самом деле так:
C++
1
2
3
4
5
6
7
8
char **a = NULL; * * * * *//здесь объявляем переменную-указатель
a=new (char*)[10];
if (a)
{
 for(int i=0;i<=9;i++) * *//цикл присваиваний значений
 {
  a[i]=new char[100];
 }
, или так:
}
C++
1
2
3
4
5
6
char *a = NULL; * * * * *//здесь объявляем переменную-указатель
a=new char[100];
for(int i=0;i<=9;i++) * *//цикл присваиваний значений
{
 ...// Повторное использование уже выделенной памяти.
}
Добавлено через 5 минут
Цитата Сообщение от mc.Duck Посмотреть сообщение
Но, тем не менее на основе указателей основано множество интересных методов, например сортировка массива с использованием бинарного дерева
Может тогда уж балансировка двоичного дерева на основе массива? Хотя я, например, даже это слабо себе представляю.

Добавлено через 2 минуты
Цитата Сообщение от mc.Duck Посмотреть сообщение
указатели - прошлый век! Сейчас надо голову над другим ломать, над чем-то более современным. Без указателей всегда можно обойтись.
Вот только в прошлом веке без них и можно было реально обойтись, да и то не долго.

Добавлено через 7 минут
Цитата Сообщение от mc.Duck Посмотреть сообщение
alex_x_x, я лишь хотел показать, что использование в программах указателей черевато ошибками
Нет. Ты показал, что не понимаешь смысла собственных действий с указателями. Чем их заменить, кстати? Решёточники предлагают ссылки. Предположим, так сделают на плюсах. И что?
C++
1
2
3
int &a=new int [1000];
...
a=0; // Вместо освобождения памяти тупо присвоился ноль элементу с нулевым индексом, освободить же память не возможно, то есть вся динамическая память гарантировано течёт.
. А адресная арифметика?
C++
1
2
3
int *a=new int [1000];
int *p=a;
++p; //Инкремент адреса, то есть переход к следующему элементу массива
C++
1
2
3
int &a=new int [1000];
int &p=a;
++p; //Инкремент элемента массива с нулевым индексом, адрес не меняется.
.

Добавлено через 5 минут
Цитата Сообщение от Dekio Посмотреть сообщение
Ссылками например (НЕ явными указателями). А скорость работы программы?
Ссылка не есть неявный указатель. Ссылка - это синоним самого данного, который может быть реализован с помощью скрытого неявно разыменованного указателя, но такая реализация не гарантируется стандартом. Кроме того, если скрытый указатель не кастрирован до полной бесполезности везде, кроме изменяемых параметров подпрограмм, то он то как раз и опасен, и путаницу гарантирует. Ладно ещё NULL и 0, различные семантически, для освобождения массива интов (a=0 - обнуление, а=NULL - освобождение). А если массив ссылок на динамические данные?

Добавлено через 3 минуты
Цитата Сообщение от alex_x_x Посмотреть сообщение
ну проблемы то есть, что уж скрывать и иногда очень сложные для разрешения
Ну ка приведи пример хоть одной проблемы, которую нельзя решить просто, мельком пролистав исходник на трезвую голову. Не можешь? То то же. Проблемы не от указателей, а от пива. Нельзя писать с пьяну и всего делов.

Добавлено через 6 минут
Цитата Сообщение от Thinker Посмотреть сообщение
А как, например, вы будете массив функции передавать? А в Си без указателей ну совсем никак!
Можно весь массив в стек запихать, как обычную переменную.

Добавлено через 2 минуты
Цитата Сообщение от Bers Посмотреть сообщение
Например, в бейсике?
И как это я на с бейсика обращался напрямую к памяти для поддержки нестандартного бинарника с векторным шрифтом? В бейсике указатель не введён в стандарт, но это не означает отсутствия в языке указателей. Я только не помню, какую именно отсебятину на тему указателей снёс лорд Клайв (а может какой работавший на него програмер) и не могу привести кусок исходника с указателем на бейсике.

Добавлено через 4 минуты
Цитата Сообщение от Bers Посмотреть сообщение
Но кюбасик, который ещё под ДОСом бегал - один из лучших языков в мире, имхо.
Ползал он там, а не бегал. Худший диалект даже среди бейсика. По крайне мере, из тех, которые я знаю. На его фоне даже бласт - сказка, а не диалект.

Добавлено через 1 минуту
Цитата Сообщение от Bers Посмотреть сообщение
Если б был бы такой же, только современный, и под Виндовс.
то был бы крокодил зелёный, синий как морковка.

Добавлено через 3 минуты
Цитата Сообщение от Bers Посмотреть сообщение
Сам я ничего против указателей не имею. Но если я пишу библиотечный класс, то пишу его таким образом, что бы пользователю не пришлось иметь дело с указателем.
Правильно. Чужие указатели из непонятного класса - мина почти мгновенного действия, но члены то класса могут с указателем работать.

Добавлено через 5 минут
Цитата Сообщение от Диман56 Посмотреть сообщение
Хорошо))) Исправлю) Просто проблема в том, что у меня не получается присвоить i-ой строке имя файла.
Проблема в том, что строка - тоже массив, а у тебя массив массивов и указатель на указатель, а не на char. Массиву же нельзя ничего присвоить целиком, а только поэлементно, или передавай его в функцию копирожания строк, как параметр - приёмник, тогда уже в ней спрячется то же самое поэлементное присваивание.
 
Текущее время: 03:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru