What is the Main() Function in C?
A C application can be understood as a collection of functions interacting with each other to achieve certain functionalities. The main() function is the entry point of a C application. All C application must include a main() function and it must return an integer value (also known as the return code of an application). Typically, a return code of 0 indicates a successful execution while other values indicate error.
The main() function is also responsible for handling command line arguments. These are passed to an application when a user starts an application. Arguments can affect the behavior of an application, making it possible to have a single application doing different tasks by giving it different arguments.
Example of a main() function that prints “Hello World” and exits the program with return code 0.
/*
* myprogram.c
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Hello World\n");
return 0;
}
Process Command Line Arguments
Arguments are passed to an application when it runs. The example below demonstrates running “myprogram” with 2 arguments (name as a string and age as an integer).
./myprogram cary 25
These arguments are handled in the main() function as:
- argc: the number of arguments supplied by the user including the application name as well.
- argv[]: a char * array of variable length, each representing the supplied argument in char * (string).
/*
* myprogram.c
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
/* argv[0] = "myprogram" */
/* argv[1] = "cary" */
/* argv[2] = "25" */
/* check the number of arguments */
if (argc != 3)
{
printf("invalid number of arguments. Expect 2\n");
return -1;
}
/* print the arguments - second argument printed as string */
printf("my name is %s and my age is %d\n", argv[1], atoi(argv[2]));
return 0;
}
Create User Functions
It is technically possible to include all your program’s logic implementation within the main() function but it is generally not a good idea. This would make the main function so gigantic that it is impossible to understand or debug for a problem. For this reason, we generally split our logic into several functions and have them interact with each other in a neat way. This makes the source code easier to understand and debug. So, how do you define a C function?
A C function can be defined in this format below. If a function does take argument, or return no argument, put void instead.
[return data type] function_name( [argument1], [argument2] ... )
{
[write logic here]
}
Example 1: a function called addOneToMyNumber() that takes one input argument of type int, add 1 to it and return the result also of type int:
int addOneToMyNumber(int number)
{
return number+1;
}
Example 2: a function called addOneToMyNumberPointer() that takes one input argument of type int *, add 1 to it but return no result. void is a special keyword that represent nothing is returned or takes no argument in the context of a C function. Pointer is a advanced concept in C programming. Refer to this page to learn more.
void addOneToMyNumberPointer(int * number)
{
return *number+1;
}
Example 3: a function called printMyInt() that prints the given integer value and returns nothing:
void printMyInt(int number)
{
printf("number is %d", number);
}
All 3 examples above can be invoked from within the main() function. Also, the main() function can also take void arguments. This means that this program will ignore all arguments given.
/*
* myprogram.c
*/
#include <stdio.h>
int main(void)
{
int num = 10;
num = addOneToMyNumber(num);
addOneToMyNumberPointer(&num);
printMyInt(num);
return 0;
}

Hi, I’m Cary Huang — a tech enthusiast based in Canada. I’ve spent years working with complex production systems and open-source software. Through TechBuddies.io, my team and I share practical engineering insights, curate relevant tech news, and recommend useful tools and products to help developers learn and work more effectively.





