Који су покази у Ц ++?
Показује најмоћнију алатку у ц ++, она помаже програмеру да директно приступа и манипулише меморијом. На примјер, када се креира варијабла, посао преводиоца је додијелити меморију за спремање вриједности варијабле. И та се вредност преузима помоћу променљиве имена додељене подацима. Ц ++ има компатибилност за чување и преузимање података из меморије која се односи на адресу меморијске локације на којој се подаци чувају. Ц ++ чак и извршава показиваче на показивачу.
Синтакса
Општи формат декларације показивача је:
Data_type * pointer -variable-name
Имајте на уму да варијабли показивача треба претходити звјездицом (*)
Пример: инт * кптр;
Променљива кптр је показивач на цео број. Опћенито, варијабле показивача могу указивати на цјелобројне варијабле, карактерне варијабле, низове, датотеке, функције.
Зашто су нам потребни показивачи на Ц ++?
Динамичка алокација меморије је једноставна на Ц ++ помоћу показивача, а најистакнутији значај показивача је тај што су много ефикаснији у руковању различитим типовима података. Они повећавају брзину извршења када функција врати једну вредност и такође пружају руку приступу променљивој која је дефинисана изван функције. Најчешћа употреба укључује управљање подацима и приступ функцијама чланова класе.
Како створити показиваче у Ц ++?
Ево следећих корака за креирање показивача у Ц ++
Корак бр. 1 - Иницијализација показивача
Препоручљиво је иницијализовати променљиве поинтера чим су декларисане. Пошто променљиве поинтера чувају адресе, оне могу адресирати било који део меморије.
int *a; // pointer to an integer
double *da; // pointer to a double
float *fa; // pointer to afloat
char *ch // character pointer
Размотрите следећи пример:
инт п, * пи; // Ова изјава упућује преводиоцу да резервише простор за променљиву п у меморији како би задржала цела вредност.
пи = & а; // Додели адресу целобројне променљиве п променљивој поеници. На пример, ако је адреса п 4581, вредност у * пи ће бити једнака 4581.
Корак # 2 - Поништавање поинтера
Овде је променљива показивача дозвољена да указује на било који тип података, а овај се тип користи у пролазу показивача како би функционисали који раде независно од типа података на који је указано.
Синтакса: воид * променљива поинтера;
Пример:
#include
#include
using namespace std;
int main ()
(
int x, *iv;
float f, *fv;
void *vp;
x=3;
f=45.2;
iv=&x;
fv=&f;
vp=&x;
cout<< "the value pointed by iv is "<<*iv<< endl;
cout<< "The address of x is "< cout<< "the value pointed by fv is "<<*fv<< endl;
cout<< "The address of f is "< cout<< "The address of x is "< vp= &f;
cout<< "the address of f is "< )#include
#include
using namespace std;
int main ()
(
int x, *iv;
float f, *fv;
void *vp;
x=3;
f=45.2;
iv=&x;
fv=&f;
vp=&x;
cout<< "the value pointed by iv is "<<*iv<< endl;
cout<< "The address of x is "< cout<< "the value pointed by fv is "<<*fv<< endl;
cout<< "The address of f is "< cout<< "The address of x is "< vp= &f;
cout<< "the address of f is "< )#include
#include
using namespace std;
int main ()
(
int x, *iv;
float f, *fv;
void *vp;
x=3;
f=45.2;
iv=&x;
fv=&f;
vp=&x;
cout<< "the value pointed by iv is "<<*iv<< endl;
cout<< "The address of x is "< cout<< "the value pointed by fv is "<<*fv<< endl;
cout<< "The address of f is "< cout<< "The address of x is "< vp= &f;
cout<< "the address of f is "< )#include
#include
using namespace std;
int main ()
(
int x, *iv;
float f, *fv;
void *vp;
x=3;
f=45.2;
iv=&x;
fv=&f;
vp=&x;
cout<< "the value pointed by iv is "<<*iv<< endl;
cout<< "The address of x is "< cout<< "the value pointed by fv is "<<*fv<< endl;
cout<< "The address of f is "< cout<< "The address of x is "< vp= &f;
cout<< "the address of f is "< )#include
#include
using namespace std;
int main ()
(
int x, *iv;
float f, *fv;
void *vp;
x=3;
f=45.2;
iv=&x;
fv=&f;
vp=&x;
cout<< "the value pointed by iv is "<<*iv<< endl;
cout<< "The address of x is "< cout<< "the value pointed by fv is "<<*fv<< endl;
cout<< "The address of f is "< cout<< "The address of x is "< vp= &f;
cout<< "the address of f is "< )
Излаз:
$ г ++ -о главном * .цпп
$ маин
вредност која је истакнута ив је 3
Адреса к је 0к7ффефббее6д4
вредност означена са фв је 45, 2
Адреса ф је 0к7ффефббее6д0
Адреса к је 0к7ффефббее6д4
адреса ф је 0к7ффефббее6д0
Корак # 3 - Показивачи Аритметичке операције у Ц ++
Аритметика показивача се изводи низовима. Следеће операције се могу изводити на показивачима. Су:
- Повећање (++)
- Децремент (-)
- Додатак показивача
- Одузимање показивача
Када додамо 1 показивачу он одређује додавање величине показивача на.
Програм у наставку одређује аритметику показивача која ради док не стигне на крају матрице.
#include
#include
using namespace std;
void pointerarithmetic(int a(), int size)
(
int *e, *t; //Declaring two int pointers variables
e = a; //assigning e to point the arrays initial element a(0) t = a + size; // assigning variable t to the array last element
while(e != t)
(
cout << *e << endl; //displays the e
e++; // incrementing ( next element)
)
)
int main()
(
int a() = (2, 4, 6, 8, 10, 12, 14, 16, 18, 20);
pointerarithmetic (a, 20);
return 0;
)
Излаз:
$ г ++ -о главном * .цпп
$ маин
2
4
6
8
10
12
14
16
18
20
0
0
4196480
0
-1743362854
32686
1
0
153860328
32766
Корак # 4 - Поинтер на показивач
флоат ** фпп;
Означава два нивоа показивача ( Више индиректних ). То је променљива која упућује на други показивач и даље упућује на објект наведен у меморијској локацији. На пример, фпп је плутајући показивач који тренутно показује на меморијску адресу 2001, величина флоата је 8 бајтова, затим за
фпп ++;
означава фпп који упућује на адресу 2009. Слично томе, када се варијабла смањи за 1, указаће на претходну локацију основног типа на адреси 1993.
Корак бр. 5 - Показивач на функције
Када се показивачи пренесу на функцију као аргументи, ставке података повезане са променљивом ових показивача се мењају унутар функције, а затим враћају у позивни програм, промене ће бити задржане у програму позива. Када се показивач прослеђује као параметар, одговарајуће ставке података глобално се мењају из позване функције. Показивач се прослеђује референцом. Функције се у показивачима могу изводити на различите начине:
- функција која се позива преношењем референце
- Функција која се позива преласком показивача
Функција која се позива преношењем референце
У овом случају, адреса се преноси као аргумент уместо вредности.
Пример:
#include
using namespace std;
void changefn(int*, int*);
int main()
(
int n = 5, m = 6;
cout << "Before change" << endl;
cout << "n = " << n << endl;
cout << "m = " << m << endl;
changefn(&n, &m);
cout << "\nAfter change" << endl;
cout << "n = " << n << endl;
cout << "m = " << m << endl;
return 0;
)
void changefn(int* x1, int* x2) (
int s1;
s1 = *x1;
*x1 = *x2;
*x2 = s1;
)
Излаз:
$ г ++ -о главном * .цпп
$ маин
Пре промене
н = 5
м = 6
После промене
н = 6
м = 5
Закључак
Овај је чланак требао на једноставан начин освјежити знање о томе како користити показиваче на Ц ++ и њихове основне теме на једноставан начин. Поинтер је такође познат као локатор смањује исказ кода за веће перформансе. Показивачи играју виталну улогу у имплементацији структура података попут повезане листе и програмирања на нивоу система. Они су најпожељнији језик у уграђеним системима јер су добар начин за приступ меморији директно помоћу показивача.
Препоручени чланци
Ово је водич за Показе у Ц ++. Овде смо разговарали о томе како креирати показиваче у Ц ++ помоћу датих примера и резултата и зашто су нам потребни. Такође можете погледати следећи курс анализе података да бисте сазнали више
- Показивачи у Питхон-у
- Типови података на Ц
- Низи у Ц ++
- Звездани обрасци у ц ++
- Како Поинтери раде у Ц #?