Шта је воид* у Ц и Ц++

Sta Je Void U C I C



Ц и Ц++ су два програмска језика која се у великој мери ослањају на показиваче за управљање меморијом и манипулацију подацима. Показивачи су променљиве које чувају меморијске адресе, које омогућавају програмима да приступају подацима ускладиштеним у меморији и манипулишу њима. Једна посебна врста показивача је празан показивач (воид*) , такође познат као а генерички показивач .

Шта је показивач празнине (воид*)?

Воид показивач, такође познат као генерички показивач, је показивач који није повезан ни са једним специфичним типом података, што га чини погодним за указивање на било коју врсту података. Другим речима, а воид показивач може да указује на цео број, знак, стринг или било који други тип података. Ова флексибилност чини воид показиваче моћним алатом у Ц и Ц++ програмирању.

Декларација Воид Поинтер у Ц и Ц++

У Ц и Ц++, воид показивач је декларисан кроз следећу синтаксу:







празнина * птр ;

Употреба показивача Воид у Ц и Ц++

Воид показивачи у Ц се углавном користе када тип података променљиве није познат или може да варира током извршавања. Они омогућавају генерички начин складиштења и манипулације подацима без потребе да се зна њихов специфични тип података. То је корисно посебно када се ради о функцијама или структурама података које могу да рукују различитим типовима података.



Једна уобичајена употреба празнине показиваче је у функцијама алокације меморије као нпр маллоц() који враћа тачку показивача празнине на блок меморије који се може користити за складиштење било ког типа података. Програмер тада може да пребаци показивач воид на одговарајући тип података да би приступио и манипулисао подацима ускладиштеним у додељеном меморијском блоку.



Друга употреба показивача празнине у Ц је ин показивачи функција , које су променљиве које чувају меморијску адресу функције. Воид показивачи се могу користити за чување меморијске адресе било које функције, без обзира на њен тип враћања или листу параметара, омогућавајући већу флексибилност у коришћењу показивача функције.





Употреба празнине показиваче у Ц++ је скоро сличан, међутим, могу се користити и за креирање генеричког интерфејса за објекте различитих класа. Ово се често постиже коришћењем виртуелних функција, које омогућавају да се објекти различитих класа третирају уједначено. Даље, Ц++ нуди строжију проверу типа од Ц, што значи да коришћење празнине показиваче погрешно може довести до више грешака и грешака.

Тачке које треба узети у обзир при коришћењу Воид показивача у Ц и Ц++

Ево неколико тачака које треба да узмете у обзир док користите празнине показиваче у Ц и Ц++.



1: У Ц, празнина* може се користити као повратна вредност и параметар функције, али у Ц++ морате имати специфичан тип података показивача.

На пример:

У Ц, код је дат у наставку:

#инцлуде <стдио.х>

#инцлуде <стдлиб.х>

празнина * адд_нумберс ( инт а , инт б ) {

инт * резултат = маллоц ( величина ( инт ) ) ;

* резултат = а + б ;

повратак ( празнина * ) резултат ;

}

празнина принт_ресулт ( празнина * резултат ) {

инт * птр = ( инт * ) резултат ;

принтф ( „Резултат је: %д ' , * птр ) ;

бесплатно ( птр ) ;

}

инт главни ( ) {

инт нум1 = 5 , нум2 = 7 ;

празнина * резултат = адд_нумберс ( нум1 , нум2 ) ;

принт_ресулт ( резултат ) ;

повратак 0 ;

}

Горњи код дефинише функцију адд_нумберс() који враћа а празнина* показивач на резултат сабирања два цела броја прослеђена као аргументи. Функција принт_ресулт() узима а празнина* показивач и штампа резултат. У функцији маин() позивамо адд_нумберс() и проследите добијено празнина* показивач до принт_ресулт() за штампање.

У Ц++-у је потребан одређени тип података.

#инцлуде <иостреам>

користећи простор имена стд ;

празнина принтИнт ( инт * на једном ) {

цоут << 'Цео број је: ' << * на једном << ендл ;

}

инт главни ( ) {

инт Икс = 10 ;

инт * птр = & Икс ;

принтИнт ( птр ) ;

повратак 0 ;

}

2: У Ц-у можете да конвертујете показивач воид у други тип показивача преко имплицитна конверзија. Али у Ц++ морате да користите експлицитна конверзија да конвертује воид показивач на било који други тип показивача.

Ево једноставног примера кода за Ц и Ц++ да илуструје разлику између имплицитно и експлицитна конверзија оф празнине показиваче на друге типове показивача:

У Ц-у се користи следећи код:

#инцлуде <стдио.х>

празнина принтЦхар ( празнина * гл ) {

цхар ц = * ( цхар * ) гл ;

принтф ( „%ц ' , ц ) ;

}

инт главни ( ) {

цхар ц = 'а' ;

празнина * птр = & ц ;

принтЦхар ( птр ) ;

повратак 0 ;

}

Горњи код дефинише функцију принтЦхар који узима воид показивач као параметар и штампа карактер сачуван на тој меморијској локацији. У главној функцији, променљива цхар ц је дефинисан и његова адреса се чува у показивачу празнине птр. Тхе принтЦхар функција се тада позива са празни показивач „птр“ као аргумент. Воид показивач је експлицитно конвертован у цхар показивач у „принтЦхар“ функција за приступ и штампање вредности сачуване у 'ц' .

У Ц++, код је дат у наставку:

#инцлуде <иостреам>

празнина принтИнт ( празнина * на једном ) {

инт * птр = статиц_цаст < инт *> ( на једном ) ;

стд :: цоут << * птр << стд :: ендл ;

}

инт главни ( ) {

инт Икс = 10 ;

празнина * птр = & Икс ;

принтИнт ( птр ) ;

повратак 0 ;

}

Горњи код дефинише функцију принтИнт који узима воид показивач нум као параметар и претвара га у целобројни показивач користећи оператор статиц_цаст . Функција затим исписује вредност целог броја на који указује убачени показивач. У главној функцији дефинисана је целобројна променљива к и њена адреса се чува у а воид показивач птр, који се затим преноси на принтИнт функција. Излаз програма је вредност к, што је 10.

Последње мисли

Тхе празнина показивачи у Ц и Ц++ пружају моћан начин за манипулацију подацима без потребе да се зна њихов специфичан тип података. Они су корисни за доделу меморије и показиваче функција, као и за креирање генеричког интерфејса за објекте различитих класа у Ц++. Међутим, важно је узети у обзир разлике између Ц и Ц++ у њиховој употреби празнине показиваче , као што је потреба за специфичним типовима података у Ц++-у и потреба за експлицитном конверзијом при калевању воид показивача на друге типове показивача. Пажљиво разматрање ових тачака може довести до ефикаснијег и ефикаснијег коришћења празнине показиваче у програмирању.