Sen toplama yaptiktan sonra onu print ile ekrana yazdirmak istemiyorsun diyelim. Varsayalim ki bir dosyaya yazdirmak istiyorsun. 2 gun sonra fikir degistirdin, network'te baska bir bilgisayara gondermek istiyorsun. Hepsi icin tek tek "void" bir fonksyon yazmazsin.
Toplama islemi 2 sayiyi alir; matematiksel bir uygulama yapar sana tek bir skaler sonuc verir. En az 2 inputu olan ve 1 tane outputu olan bir fonksiyon dur toplama. O yuzden toplamayi bir "int" fonksiyonu olarak tanimlayabilirsin.
Ancak her islem sonucunda bir karsilik beklemezsin. Ekrana bir sey yazdirmak gibi. Ornegin kullandigin printf() fonksyonu void 'dir. Input alir, output vermez.
Programlama yaparken dizayn ettigin fonksyon her neyse, sana vermesini istedigin sonuc onun "return" edecegi sey olur.
Daha teknik tabirle, stack'te bulunan her fonksyon/metod cagrisinin, ilgili signature'a gore sana return etme garantisi bulunur. "void" tanimli olan stack cagrilarinin return ettigi deger stack'te allocate edilmez. Bu sebeple cogu C benzeri dillerde void metodlarda "return" keyword' unu kullandiginda programin compile/runtime hatasi vermez.
Yani
void foo(){
// biseyler
return;
}
yazabilirsin. Bu fonskyonu isleyen thread return eder, ama ettigi deger "void" dir. Null degil, void.