Қатысушы:Aiskakova/зертхана

Уикипедия — ашық энциклопедиясынан алынған мәлімет
Навигацияға өту Іздеуге өту

C және Algol68 туындысы болып табылатын void түрі бірнеше бағдарламалау тілдерінде әдетте нәтиже мәнін қайтарады, бірақ оны шақырушы объектіге бермейді. Әдетте мұндай функциялар өздерінің жанама әсерлеріне байланысты қолданылады. Мысалы, қандай да бір тапсырманы орындау немесе олардың шығу параметрлеріне жазу. Бұл жағдайда void типін қолдануды Pascal рәсімдері мен Visual Basic ішкі бағдарламаларын анықтайтын синтактикалық конструкциялармен салыстыруға болады. Ол сондай-ақ функционалдық бағдарламалау тілдерінде және түрлер теориясында қолданылатын блок түріне ұқсас. Салыстыру үшін бағдарламалау тілдерінде Unit type#бөлімін қараңыз.

C және C++, сондай-ақ void түріне көрсететін пойнтерды (көрсеткішті) қолданады (void * ретінде көрсетілген), бірақ бұл байланыссыз ұғым. Бұл типті айнымалылар белгісіз типті деректерге пойнтерлар болып табылады, сондықтан осы контекстте ғана void * әмбебап немесе жоғарғы түр ретінде әрекет етеді. Бағдарлама, бәлкім, пойнтерды деректердің кез келген түріне өзгерте алады (функция пойнтерінен басқа). Ол оны void пойнтеріне және, кері ақпаратты жоғалтпай, бастапқы түріне түрлендіре алады. Бұл пойнтерлерді полиморфты функциялар үшін пайдалы етеді. C тілінің стандарты пойнтерлердің әр түрлі түрлерінің бірдей мөлшерді болуына кепілдік бермейді.


Void нәтижесінің түрі бар Функция функцияның соңына жетуімен немесе қайтарылмайтын мәнсіз return операторының орындалуымен аяқталады. Void түрі функцияның ешқандай аргументтерді қабылдамайтынын көрсететін функция прототипінің жалғыз дәлелі болуы мүмкін. Атауына қарамастан, барлық жағдайларда void түрі нөлдік немесе төменгі түр емес (кейде қате "void түрі" деп аталады), unit түрі ретінде жұмыс істейді. Синглет болып табылатын нақты unit түріне қарағанда, void түрінің өзінің мәнін ұсыну тәсілі жоқ, және тіл объектіні жариялаудың немесе void типімен мәнді көрсетудің ешқандай тәсілін ұсынбайды.

C тілінің ең ерте нұсқаларында default (әдепкі) бойынша return түріне қайтарылатын белгілі бір нәтижесі жоқ функциялар қарапайым бос аргументтер тізімдеріне ие болды. Түрлері сипатталмаған деректерге көрсететін пойнтерлер integer (бүтін сандар) немесе char көрсеткіштері ретінде жарияланды. C тілінің кейбір ерте компиляторлары қазір мазаны алатын функцияға ие болды. Бұл функция - функцияның қайтарылатын мәнін пайдаланбайтын функцияның кез келген шақыруы туралы ескерту жасау. Ескі код кейде бұл ескертуді басу үшін мұндай мүмкіндіктердің шақыруларын void-ке әкеледі. Бьярне Страуструп 1979-1980 жылдары C++ жұмысын бастағанда, void және void пойнтерлері AT&T компиляторлары қолдайтын C тілінің диалектісінің бөлігі болды.

Нақты void түрін пайдалану және функцияның прототипінде аргументтердің болмауы C және C++ тілдерінде әртүрлі семантикаға ие. Бұл келесі кестеде нақтыланған:


Ешқандай аргумент қабылдамайтын C прототипі, мысалы жоғарыдағы void f() , C99 [1] -да ескірген.

C++-ке қарағанда, Haskell бағдарламалау тілінде void түрі мекендеушілері жоқ бос типті білдіреді. Void түріндегі Функция нәтижелерді қайтармайды, ал IO Void типті жанама әсерлері бар бағдарлама аяқталмайды немесе бұзылып, істен шығады. Сонымен қатар, void түрінде толық функциялар жоқ.