Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Составить программу, в которой описывается структура из полей: Название товара, Цена, Размер партии товара... Составить программу, в которой описывается структура из полей: Название товара, Цена, Размер партии товара (в штуках). Организовать ввод двух структурных переменных, вывод каждой структуры на экран и расчет значения "Стоимость товара". Стоимость товара = Цена товара * Размер партии товара. https://www.cyberforum.ru/ cpp-beginners/ thread779336.html Реализация стека C++
Здравствуйте, помогите пожалуйста с реализацией стека без использования STL. Стек отображен в памяти Вектором, память статическая(1 вариант), динамическая (2 вариант).
C++ Продолжение строки с нового абзаца в коде Собствено, как: printf("Hello World"); Без использования std::string! Именно константым литералом https://www.cyberforum.ru/ cpp-beginners/ thread779334.html C++ Составьте программу, которая создает очередь из произвольного количества элементов https://www.cyberforum.ru/ cpp-beginners/ thread779331.html
Здравствуйте! Помогите пожалуйста с задачей. Составьте программу, которая создает очередь из произвольного количества элементов. Информационная часть динамического элемента должна состоять из двух целых чисел. Организуйте обработку каждого элемента: печать целых чисел из информационной части и их среднее значение.
C++ Описать рекурсивную функцию вещественного типа, находящую значение N й степени числа X по формулам:
• Описать рекурсивную функцию вещественного типа, находящую значение N й степени числа X по формулам: X 0 = 1, X N = (X N/2)2 при четных N > 0, X N = X•X N–1 при нечетных N > 0, X N = 1/X –N при N < 0 (X ? 0 — вещественное число, N — целое; в формуле для четных N должна использоваться операция целочисленного деления). С помощью этой функции найти значения X N для данного X при пяти данных...
C++ Описать рекурсивную функцию целого типа, находящую C(N, K) — число сочетаний из N элементов по K — с помощью рекуррентного соотношения: https://www.cyberforum.ru/ cpp-beginners/ thread779323.html
Описать рекурсивную функцию целого типа, находящую C(N, K) — число сочетаний из N элементов по K — с помощью рекуррентного соотношения: C(N, 0) = C(N, N) = 1, C(N, K) = C(N – 1, K) + C(N – 1, K – 1) при 0 < K < N. Параметры функции — целые числа; N > 0, 0 ? K ? N. Дано число N и пять различных значений K. Вывести числа C(N, K) вместе с количеством рекурсивных вызовов функции,...
C++ Описать рекурсивную функцию вещественного типа, находящую приближенное значение корня K-й степени из числа X по формуле: Описать рекурсивную функцию вещественного типа, находящую приближенное значение корня K-й степени из числа X по формуле: Y0 = 1, YN+1 = YN – (YN – X/(YN)K–1)/K, где YN обозначает N-ое приближение корня K-ой степени из X. Параметры функции: X (> 0) — вещественное число, K (> 1) и N (> 0) — целые. С помощью функции найти для данного числа X приближенные значения его корня K й степени при шести... https://www.cyberforum.ru/ cpp-beginners/ thread779322.html C++ я решил задачу про шахматы посмотрите ошибку
#include<iostream> using namespace std; int main() { int gorizontal, vertikal, a, b, c, d; int x1, y1, x2, y2; cout<<"vvedite cifri po verticali=";
C++ Распознавание текста Доброе утро! На форуме находится множество подобных тем, однако конкретной информации так и не было найдено. Имеется задача - научить программу распознавать символы - в частности - автомобильные номера. Я в курсе, что имеется чудо-библиотека OpenCV, однако не совсем понимаю куда копать, поэтому прошу помощи: что делать? Я понимаю, что для начала изображение необходимо перевести в черно-белое,... https://www.cyberforum.ru/ cpp-beginners/ thread779300.html C++ Иррациональное выражение https://www.cyberforum.ru/ cpp-beginners/ thread779299.html
Как можно проверить иррациональность подкоренного выражения?
C++ Выделение памяти
Здравствуйте! #include<iostream> int main() { int *mass = new int ; int *mass2 = new int ; std::cout << (unsigned int)mass << std::endl; std::cout << (unsigned int)mass2 << std::endl; int *mass3 = mass; delete mass; delete mass2;
C++ решение задачи https://www.cyberforum.ru/ cpp-beginners/ thread779279.html
(x-3)! 3<=x<=10 x=|x*4|+1 -5<=x<3 _(x^5) x<-5 помогите решить через функции
9 / 9 / 7
Регистрация: 23.11.2012
Сообщений: 94
05.02.2013, 12:34 0

Указатели - C++ - Ответ 4095544

05.02.2013, 12:34. Показов 1557. Ответов 22
Метки (Все метки)

Ответ

Указатели представляют собой адресные переменные. То есть они содержат адрес объекта/переменной в памяти. Например переменная int omg; cout << &omg; выведет её адрес. Определив указатель на переменную int следующим образом: int *ptr; можем присвоить ему адрес переменной omg, ptr = &omg; так же мы можем присвоить указателю адрес переменной используя операцию расшифровки, она тоже выглядит как символ *.
Важно не путать с символом * в определении указателя, здесь мы используем его, чтобы создать указатель. Опять же пример с переменной int omg;. Присваиваем адрес переменной omg указателю ptr. *ptr = omg;. Операция расшифровки, заставляет указатель выдать нам собственно объект на который он указывает, то есть переменную типа int (так как мы определили указатель на переменную int ).
Указатель может быть на любой тип данных, включая пользовательские, так же может указывать на массив. Существует такое понятие, как константный указатель. Выглядит это примерно так:
C++
1
const int *ptr;
в этом случае значение указателя ( адрес ) не может быть изменен, короче говоря, место в памяти, за определенным номером, занимаемое переменной типа int ( так как наш указатель, есть указатель на тип int ) изменено быть не может. Существует так же такое понятие, как указатель на константу и выглядит это так:
C++
1
int const *ptr;
в данном случае содержимое указателя изменено быть не может( то на что указывает указатель, в данном случае переменная типа int ), однако оно может быть помещено в другую область памяти, то есть может быть изменено значение указателя.

Существует так же такое понятие, как указатель на указатель, например:
C++
1
char **ptr;
таким образом определяем указатель на указатель типа char;
Можно, например, определить массив указателей на указатели:
C++
1
char** ptr[10];
имеем 10 указателей на char и таким образом можем внести в один массив 10 строк:
C++
1
*ptr[0] = " string 1 "; *ptr[1] = " string 2 ";
ну и собственно так далее. Такой синтаксис возможен, так как массив, обычный массив типа char (например), есть указатель на его первый элемент, то есть указатель, на область памяти, начиная с которой можно считывать данные, находящиеся в массиве.

Для вызова функции через указатель можно применять 2 операции. Допустим у нас есть некий класс ZOMG, и мы определили указатель на объект этого класса:
C++
1
2
ZOMG o1; 
ZOMG *ptr = &o1;
Теперь, чтобы вызвать любую функцию для объекта o1, на который указывает наш указатель ptr мы можем сделать так:
C++
1
2
3
*ptr.func( );
// или так:
ptr->func( );
Фактически, операция -> разыменовывает указатель и вызывает функцию, поэтому нам не нужно применять операцию * разыменования.

Для указателей существует две очень полезные операции: new и delete. Они позволяют динамически выделить память под объект и освободить её. Например:
C++
1
char* ptr = new char[10];
Такая команда выделяет память для массива типа char содержащего 10 символов, не больше, не меньше.
Так же мы можем выделить память для любых пользовательских данных, для объекта класса ZOMG, например:
C++
1
2
ZOMG o1;
ZOMG *ptr = new o1;
этой командой, мы выделяем памяти ровно столько, сколько достаточно для хранения одного экземпляра объекта класса ZOMG.
Чтобы освободить память, нам достаточно написать:
C++
1
delete ptr;
При работе с указателями следует быть осторожными, так как, если указатель не инициализировать какими - либо данными, он будет содержать в себе случайную область памяти и работа с таким указателем может привести к серьезным ошибкам в ОС.
Надеюсь, что то что я вам поведал поможет хоть как нибудь =)

Вернуться к обсуждению:
Указатели C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2013, 12:34
Готовые ответы и решения:

Указатели и указатели на указатели, а также типы данных
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно....

Почему Лафоре использует указатели на указатели, вместо обмена значениями указателей?
Доброго времени суток! Задался теоретическим вопросом. Читал пример из книги Лафоре...

Через указатели на указатели посчитать сумму двух чисел и записать в третье
1. Через указатели на указатели посчитать сумму двух чисел и записать в третье. 2. Написать...

Используя нетипизированные указатели и указатели на подпрограммы обобщить сортировку пузырьком
Смысл задания в том, что нужно отсортировать массив структур из 3х полей по сумме координат есть...

22
05.02.2013, 12:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2013, 12:34
Помогаю со студенческими работами здесь

Указатели на указатели с числами. Почему можно присвоить число в 4-ый элемент, если массив из 2 элементов?
Есть массив int **mas; mas=new int*; // выделил место под пять строк, верно ? mas=new int;//...

Есть три переменные. Используя указатели на указатели, поменять значение максимальной и минимальной переменной
Мой код. #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include&lt;iomanip&gt; using namespace std; ...

Зачем нужны все эти указатели (или не указатели)
Зачем надо DWORD, HANDLE, LPVOID?

Отсортировать массив и вывести на экран (массивы и указатели на указатели)
Даны массивы F-фамилий студентов и S-результаты сессии (5 оценок) , причем s- результат сессии F...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru