шаблоны сайт визитка joomla
Скачать шаблоны Joomla 3.5 бесплатно
Вы находитесь здесь:Главная»Учебные материалы»C ++»Указатели в С++

Указатели в С++

Указатель – переменная, значением которой является адрес ячейки памяти. То есть указатель ссылается на блок данных  из области памяти, причём на самое его начало. Указатель может ссылаться на переменную или функцию. Для этого нужно знать адрес переменной или функции. Так вот, чтобы узнать адрес конкретной переменной в С++ существует унарная операция взятия адреса &. Такая операция извлекает адрес объявленных переменных, для того, чтобы его присвоить указателю.

Указатели используются для передачи по ссылке данных, что намного ускоряет процесс обработки этих данных (в том случае, если объём данных большой), так как их не надо копировать, как при передаче по значению, то есть, используя имя переменной. В основном указатели используются для организации динамического распределения памяти, например при объявлении массива, не надо будет его ограничивать в размере. Ведь программист заранее не может знать, какого размера нужен массив тому или иному пользователю, в таком случае используется динамическое выделение памяти под массив. Любой указатель необходимо объявить перед использованием, как и любую переменную.

Как объявить указатель?

Принцип объявления указателей такой же, как и принцип объявления переменных. Отличие заключается только в том, что перед именем ставится символ звёздочки *. Визуально указатели отличаются от переменных только одним символом. При объявлении указателей компилятор выделяет несколько байт памяти, в зависимости от типа данных отводимых для хранения некоторой информации в памяти. Чтобы получить значение, записанное в некоторой области, на которое ссылается указатель нужно воспользоваться операцией разыменования указателя *. Необходимо поставить звёздочку перед именем и получим доступ к значению указателя.

int x;

int*y = &x; // От любой переменной можно взять адрес при помощи операции взятия адреса "&". Эта операция возвращает указательint

z = *y; // Указатель можно разыменовать при помощи операции разыменовывания "*". Это операция возвращает тот объект, на который указывает указатель


Примеры программ с использование указателей

Задача 1. Вывести содержимое вводимой строки на экран по одному символу

#include <iostream.h>
void show_string(char *string)

{
   while (*string != "")
   {
      cout << *string;

      string++;
    }
}
void main(void)
{
   show_string( "Учимся программировать на языке C++!");
}

 

Задача 2. Определить количество символов в строке, используя указатель.

#include <iostream.h>
int string_length(char *string)
{
   int length = 0;
   while (*string != "")
   {
      length++;
      string++;
   }
   return(length);
}
void main(void)
{
   char title[] = "Учимся программировать на языке C++";
   cout << title << " содержит " << string_length(title) << " символов";
}

 

Задача 3. Напишите функцию f(int* m1, int* m0, int N), которая воз- вращает первую и последнюю цифры двузначного натурального числа N (вычисление цифр двузначного числа через указатели)

int f04(int* x1, int* x0, int x)
  {
   // Расщепляем двузначное число на цифры:
   if(x<0) return -1;
   if(x>99) return 1;
   *x0 = x%10;
   *x1 = (x-*x0)/10;
    return 0;
   }
 {
   myofs << "Расщепляем двузначное число на цифры." << endl;
   int x = 10+rand()%90;
   int x1, x0;
   int m = f04(&x1, &x0, x);
   myofs << " x=" << x << ", x1=" << x1 << ", x0=" << x0 <<", f04(x1,x0,x)=" << m << "." << endl << endl;
}

 

Задача 4. Ввести целочисленный массив из N элементов с клавиатуры. Найти максимальный элемент этого массива, используя указатель

#include <iostream>
using namespace std;

int main()
{
int *arr; // указатель для выделения памяти под массив

int size; // размер массива

// Ввод количества элементов массива
cout << "n = ";
cin >> size;
if (size <= 0) {

// Размер масива должен быть положитлеьным
cerr << "Invalid size" << endl;
return 1;
}

arr = new int[size]; // выделение памяти под массив
// заполнение массива
for (int i = 0; i < size; i++) {
cout << "arr[" << i << "] = ";
cin >> arr[i];
}

// Нахождение максимального элемента
int max = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] > max) {
max = arr[i];
}
}

// Вывод результата на экран
cout << "max = " << max << endl;
delete [] arr; // освобождение памяти

return 0;
}

Другие материалы в этой категории: « Условные операторы в С++ (ветвление) Циклы С++ »

Новости о нас

Расписание занятий для каждой сформированной группы по робототехнике на 2017-2018 учебный год. Подробнее
Учебный год начался, и у нас очередная радостная новость для вас, педагоги! В этом году... Подробнее
Наши учащиеся выступили на августовской конференции педагогов! Подробнее
Хочешь учиться в Толтеке по выгодной цене? Приводи друзей и получай большие скидки!... Подробнее
19 августа в ТРЦ Сити Молл с блеском прошел РобоКвест! Героями квеста стали более сотни... Подробнее

Наши партнеры

 TZOyoOCZ8y0 logotip novy SF BashGU  utv logo  CityMoll  VolnoeDelo