Николай Ненков
преподава по Математика
в град Варна
Големина на текста:
Обектно ориентирано програмиранегл. ас. д-р Борислав П. Стоянов
5. Масиви и указатели. Предаване на резултати чрез формални
параметри. Функции от тип указател. Формални параметри и масиви.
Указатели към функции. Стандартни функции за обработка на низове.
Тип указател
Мястото в паметта, където е записана стойността на променлива се
идентифицира с адрес на променливата. Намирането на адреса на
променливата се извършва с оператор & (and, амперсанд).
&<променлива>;
Например:
int i = 300;
cout << &i;
Извеждането на &<променлива> (адреса на <променливата>) може да се
извърши с обекта cout.
Въвеждането на данни от тип указател чрез оператор cin е невъзможно.
Указателят се свързва със стойност чрез инициализация или оператор за
присвояване.
Операторът & не може да се прилага върху константи, изрази и променливи от тип
масив.
Адресите могат да се присвояват на специален тип променливи, т.н. променливи
от тип указател или само указател.
<тип> *<указател> [=<стойност>];
В отделената за <указател> памет се записва адрес.
Например:
int x;
int *xPtr = &x;
Указателят xPtr към тип int се инициализира с адреса на x.
Следват дефиниции на указатели без инициализация:
float *yPtr;
double *zPtr;
Неинициализираните указатели имат стойност 0 или NULL (неопределена
стойност). Това позволява да се организира проверка дали даден указател е
инициализиран или не с конкретен адрес, например:
if ( !countPtr)
1
Обектно ориентирано програмиранегл. ас. д-р Борислав П. Стоянов
//ex501.cpp
#include <iostream>
using namespace std;
int main(){
int count = 5;
int *countPtr;
countPtr = &count;
cout << countPtr << endl;
return 0;
}
0012FF60
Press any key to continue . . .
Операции с указатели
Променливите от тип указател могат да участват като операнди в следните
аритметични и логически операции +, -, ++, --, ==, !=, >, >=, < и <=.
Изпълнението на аритметични операции върху указатели е свързано с някои
особености, заради което аритметиката с указатели се нарича още адресна
аритметика. Особеността се изразява в т. н. мащабиране.
int *countPtr;
......
countPtr = countPtr + 1;
Горният оператор увеличава стойността на countPtr не с 1, а с countPtr +
1*sizeof(int), където sizeof(int) е функция, която намира броя на байтовете,
необходими за записване на данна от тип int.
Указатели към void
Типът, който се задава в дефиницията на един указател, е информация за
компилатора относно начина на обработване (интерпретиране) на съдържанието
на указателя. Например, ако указателят countPtr е указател към int, то *countPtr
са два байта, интерпретирани като число от тип int, чиито начален адрес е
стойността на countPtr.
Указателите от тип void може в различни моменти да сочат към данни от различен
тип. Съдържанието на такъв указател се извлича само след привеждане на типа
на указателя (void *) до типа на съдържанието.
Указател към указател
Възможно е дефинирането на указател към указател – указател, който сочи към
друг указател.
Динамични обекти
Динамичен е този обект (променлива, масив, обект от клас), който се създава и
унищожава по време на изпълнението на програма. Заетата памет, при
създаването на динамичен обект, се освобождава при неговото унищожаване и
може да бъде използвана отново.
2
Обектно ориентирано програмиранегл. ас. д-р Борислав П. Стоянов
Динамични обекти се създават чрез оператора new, който има следния синтаксис:
<указател> = new <тип динамичен обект> [<инициализация>];
Основните типове или конструирани от потребителя данни могат да бъдат <тип на
динамичен обект>. Променливата <указател> е указател към тип, който съвпада
с типа на създавания динамичен обект.
При успешно изпълнение функцията new създава динамичен обект от посочения
тип и връща резултат (стойност на функцията) адреса на новосъздадения обект,
който се присвоява на <указател>. Ако няма достатъчно оперативната памет за
създаване на динамичния обект, то операторът new връща като резултат стойност
0 (NULL).
Унищожаването на динамични обекти се извършва с оператор delete:
delete <указател>;
Указателят към динамичния обект е <указател>. В резултат от изпълнението на
оператора delete паметта, заемана от динамичния обект, се освобождава.
Примерна програма:
//ex502.cpp
#include <iostream>
using namespace std;
int main(){
int *countPtr;
countPtr = new int(67);
cout << "Address: " << countPtr << endl;
cout << " Value: " << *countPtr << endl;
delete countPtr;
return 0;
}
Address: 00335930
Value: 67
Press any key to continue . . .
Указатели и едномерни масиви
Имената на масивите са константни указатели към техните първи елементи
индекс 0).
При условие следните декларации:
int a[5];
int *aPtr;
3

Това е само предварителен преглед

За да разгледате всички страници от този документ натиснете тук.
Последно свалили материала:
ДАТА ИНФОРМАЦИЯ ЗА ПОТРЕБИТЕЛЯ
04 май 2021 в 10:16 студент на 31 години от София - УНИБИТ, факулетет - ИТ, специалност - Информационни технологии, випуск 2022
06 апр 2021 в 14:16 потребител на 21 години
03 мар 2021 в 08:33 студент на 30 години от София - УНИБИТ, факулетет - Библиотекознание и библиография, специалност - Библиотечен мениджмънт, випуск 2016
26 фев 2021 в 17:31 студентка на 44 години от Велико Търново - Великотърновски университет "Св.Св.Кирил и Методий", факулетет - Стопански факултет, специалност - Фиананси, випуск 2014
13 яну 2021 в 17:23 студент на 51 години от Кърджали - Колеж по минно дело към МГУ “Св.Иван Рилски” - София, факулетет - МИНО ГЕОЛОВКИ, специалност - АИУТ, випуск 2017
29 дек 2020 в 18:19 ученик на 24 години от София - 101 СОУ "Бачо Киро", випуск 2016
20 ное 2019 в 14:29 в момента не учи
14 окт 2019 в 10:35 студентка на 36 години от Бургас - Бургаски университет "Проф. Асен Златаров", факулетет - Факултет по технически науки, специалност - Компютърни системи и технологии, випуск 2010
06 фев 2019 в 15:23 студент на 38 години от Благоевград - Югозападен университет "Неофит Рилски", факулетет - Природо-математически, специалност - Информатика, випуск 2019
13 ное 2018 в 14:26 студент на 26 години от Бургас - Бургаски университет "Проф. Асен Златаров", факулетет - Факултет по технически науки, специалност - Компютърни системи и технологии, випуск 2020
 
Домашни по темата на материала
Да се напише програма при която в двумерен масив да се въвежда текст от 5 реда. Да се въведе един символ в променливата ch. Да се определи колко пъти се среща символът ch в текста и на какви места.
добавена от venelinvasilev 27.09.2014
0
4
 
Онлайн тестове по Програмиране
Програмиране С++
изпитен тест по Програмиране за Студенти от 3 курс
Тестът включва въпроси върху указатели, програмиране С++, структури от данни. Всички въпроси са затворени и изискват само един верен отговор.
(Труден)
20
13
1
3 мин
02.10.2014
Програмиране и използване на компютрите
междинен тест по Програмиране за Неучащи от 1 клас
Тестът се състои от 21 въпроса върху кратка история на компютрите. Всички въпроси са затворени и изискват един верен отговор.
(Лесен)
21
11
1
4 мин
12.11.2014
» виж всички онлайн тестове по програмиране

Обектно ориентирано програмиране - Указатели и масиви. Предаване на резултати. Функции от тип указател. Указател към функции. Стандартни функции за обработка на низове

Материал № 540680, от 26 юли 2010
Свален: 127 пъти
Прегледан: 134 пъти
Предмет: Програмиране, Информатика, ИТ
Тип: Лекция
Брой страници: 8
Брой думи: 55
Брой символи: 366

Потърси помощ за своята домашна:

Имаш домашна за "Обектно ориентирано програмиране - Указатели и  ..."?
Намери бързо решение, с помощтта на потребители на Pomagalo.com:

Намери частен учител

Виторио Белоречки
преподава по Програмиране
в град София
с опит от  4 години
338 37

Николай Ненков
преподава по Математика
в град Варна
с опит от  2 години
493 89

виж още преподаватели...
Последно видяха материала