In C, a return value is the value that a function sends back to the part of the program that called it after completing its task. The return type specifies the type of data that a function returns. If a function does not return a value, the return type is void
.
Types of Return Values:
- Integer Return Type (
int
): A function can return an integer value. - Floating Point Return Type (
float
/double
): A function can return a floating-point number. - Character Return Type (
char
): A function can return a single character. - Void Return Type (
void
): If a function does not return any value, the return type isvoid
. - Pointer Return Type (
int*
,char*
, etc.): A function can return a pointer to a specific data type.
Syntax for Returning a Value:
return expression;
#include <stdio.h>
// Function declaration
int add(int, int);
int main() {
int result = add(5, 10); // Function call
printf("Sum: %d\n", result); // Output: Sum: 15
return 0;
}
// Function definition
int add(int a, int b) {
return a + b; // Returning the sum of a and b
}
- Return type:
int
because the functionadd()
returns an integer. - Return value: The sum of the two integers
a
andb
.
2. Floating-Point Return Type (float
)
#include <stdio.h>
float divide(float, float);
int main() {
float result = divide(9.0, 3.0);
printf("Quotient: %.2f\n", result);
return 0;
}
float divide(float a, float b) {
return a / b;
}
- Return type:
float
because the function returns a floating-point number. - Return value: The division result of
a
andb
.
3. Character Return Type (char
)
#include <stdio.h>
char getGrade(int);
int main() {
int score = 85;
char grade = getGrade(score);
printf("Grade: %c\n", grade);
return 0;
}
char getGrade(int marks) {
if (marks >= 90) {
return 'A';
} else if (marks >= 80) {
return 'B';
} else if (marks >= 70) {
return 'C';
} else {
return 'F';
}
}
- Return type:
char
because the function returns a single character. - Return value: The grade based on the score.
4. Void Return Type (void
)
A function with a void
return type does not return a value. It performs some operation but doesn’t send anything back to the calling function.
#include <stdio.h>
void printHello(void);
int main() {
printHello();
return 0;
}
void printHello(void) {
printf("Hello, World!\n"); // No return statement
}
- Return type:
void
because the function doesn’t return any value. - There is no return value. The function only prints “Hello, World!”
5. Pointer Return Type
A function can return a pointer to a particular data type.
#include <stdio.h>
int* getMax(int*, int*);
int main() {
int a = 10, b = 20;
int* max = getMax(&a, &b);
printf("Max: %d\n", *max);
return 0;
}
int* getMax(int* x, int* y) {
if (*x > *y) {
return x;
} else {
return y;
}
}
- Return type:
int*
because the function returns a pointer to an integer. - Return value: A pointer to the maximum of the two integers.
Multiple Return Statements:
A function can have multiple return statements, typically in cases like conditional logic (if-else or switch-case), but it will only return once when the first return statement is encountered.
int checkEvenOdd(int num) {
if (num % 2 == 0) {
return 1;
} else {
return 0;
}
}
Functions with No Return Value (void
):
- If a function does not return a value, its return type is
void
, and there is no need for areturn
statement unless you just want to exit the function early.
void printMessage(void) {
printf("This function returns nothing.\n");
return;
}
int wrongFunction() {
return 3.14;
}
In this case, the return value should be explicitly cast to an integer:
int correctFunction() {
return (int)3.14;
}
So basically, return serves two purpose
- On executing the return statement, it immediately transfers the control back to the calling function.
- It returns the value present in the parentheses after return, to the calling function.