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

Указатели и ссылки c++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Метод Гаусса http://www.cyberforum.ru/cpp-beginners/thread998757.html
Всем привет. Задача: Написать код по решению задачи методом Гаусса. Код готов но код направлен на то что он выводит уже готовую матрицу. то есть матрица состоит из готовой лестницы, и переменная b...
C++ Не получается создать массив класса #include <iostream> using namespace::std; class dvig { friend void sum_all(dvig &,dvig &); public: dvig(long double ,long double,long double ,long double ,long double ,long double ,long... http://www.cyberforum.ru/cpp-beginners/thread998739.html
Динамическое программирование. Метод прямой прогонки C++
Мне нужно реализовать граф с поиском минимального пути из начала графа в конец путем прямой прогонки.Сделал граф, как список ребер, проверку, что из одной вершины в другую идет одна дуга, а как...
C++ Определить четные значения в матрице
В целочисленной матрице размерами N*M определить количество элементов, которые имеют четные значения (N и M не больше 10). Матрицу сформировать из случайных чисел в диапазоне от 0 до 100. #include...
C++ Поменять местами элементы массива http://www.cyberforum.ru/cpp-beginners/thread998708.html
В массиве A из N элементов поменять местами первый элемент с последним, второй - с предпоследним и т.д. #include <iostream> #include <stdlib.h> using namespace std; int main() { int...
C++ Небольшие задачи с массивами Доброго времени суток.Изучаю массивы,пытаюсь решить задачи.Написал,но не выходит.Нужен совет. 1)В массиве A из N элементов определить количество элементов, значения которых больше среднего... подробнее

Показать сообщение отдельно
Anton_Kretov
89 / 51 / 7
Регистрация: 26.06.2013
Сообщений: 179
05.11.2013, 18:12
Указатель - это переменная, "указывающая" на какой-либо объект, к примеру, переменную типа int. Указатель обязательно должен иметь базовый тип, который как бы говорит, что "этот указатель может взаимодействовать только с переменными такого же типа данных". С помощью указателей можно совершать некие действия, к примеру:
C++
1
2
3
int a = 10;
int *ip; //Объявили указатель на int
ip = &a; //Теперь мы как бы сказали указателю, что "ты должен хранить в себе адрес памяти этой переменной"
Попробовав сделать такую инструкцию:
C++
1
cout << ip;
Получим число в шестнадцатеричной СС, которое будет в себе выражать адрес переменной в памяти.
Есть также и второй оператор - * (один из самых высоких приоритетов). К примеру, такой код:
C++
1
2
3
4
int a = 10;
int *ip = &a; //Тут все понятно, "привязали указатель".
//Теперь магия:
cout << *ip; //Тем самым, мы выведем в консоль значение переменной, на которую указывает указатель (простите за тавтологию).
Также мы можем совершать разные арифметические операции с указателями, как с его адресами, так и со значениями, к примеру, продолжая вышеописанный код:
C++
1
*ip++;
Сейчас мы сделали инкремент значения переменной на которую указывает указатель (вот опять...)

Огромное (для меня) преимущество указателей - их взаимосвязь с массивами, а также их использование в функциях. К примеру, такой код:
C++
1
2
3
4
5
int array[10];
//Тут типо рандомно заполнили его
int *ip = array;
//Если мы попытаемся вывести ip (БЕЗ ЗВЕЗДОЧКИ), то получим значение 0-ого элемента массива
cout << ip; //Получили
С массивами и указателями, а также с их взаимосвязью надо знать много, я описал основное, и то не все. В функциях указатели могут сыграть роль "посредника", так сказать. Раньше мы передавали в качестве аргументов определенные значения, которые становились локальными переменными и изменялись только внутри функции, но значения этих аргументов будут неизменны вне функции. Объявив параметр функции как указатель, мы будем работать в функции непосредственно с самой переменной (с самим аргументом, а не с его "локальной" копией в функции), а значит, что после инкрементирования значение указателя-параметра, изменится и значение передаваемой переменной в качестве аргумента-указателя.

P.S. Тут много не опишешь, почитайте в книге Шилтда "Базовый курс" или "Шаг за шагом", все подробно описано.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru