Funktion arvo palautetaan return - lauseessa. Jokaisessa ei- void - tyyppiseksi esitellyssä funktiossa tulee olla vähintään yksi return - lause. void- tyyppisessäkin voi olla return- lause. Tarvittaessa return- lauseita voi olla useampiakin:
int suurempi(int a, int b)
{
if ( a >= b ) return a;
return b;
}
Kun return - lause tulee vastaan, lopetetaan HETI funktion suoritus. Tällöin myöhemmin olevilla lauseilla ei ole mitään merkitystä. Näin ollen useat return- lauseet ovat mielekkäitä vain ehdollisissa rakenteissa. Siis seuraavassa ei olisi mitään mieltä:
int hopo(int a) :-(
{
int i;
return 5; /* Palauttaa aina 5!!! */
i = 3 + a;
return i+2;
}
return- lausetta ei saa sotkea arvojen palauttamiseen osoitteen avulla. Esimerkiksi:
/* funjaoso.c */
#include <stdio.h>
int tupla_plus_yksi(int *pArvo)
{
int vanha=*pArvo; /* Alkuperäinen arvo talteen */
*pArvo = *pArvo + 1; /* Kutsun muuttuja muuttui nyt! eli j = 4 */
return 2*vanha; /* Arvo palautui nimessä nyt! eli i = 6 */
}
int main(void)
{
int i,j=3;
i = tupla_plus_yksi(&j);
printf("i = %d, j = %d\n",i,j);
return 0;
}
int tupla_plus_yksi(int *pArvo)
{
*pArvo = *pArvo + 1;
return 2**pArvo;
}