Bird
Raised Fist0
Cprogramming~10 mins

Function declaration and definition - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Function declaration and definition
Start
↓
Function Declaration
↓
Function Definition
↓
Function Call
↓
Execute Function Body
↓
Return Result
↓
Continue Main Program
↓
End
The program starts by declaring a function, then defining it. When the function is called, its body runs and returns a result, then the main program continues.
Execution Sample
C
int add(int a, int b);  // Declaration

int main() {
    int result = add(3, 4);
    return 0;
}

int add(int a, int b) {  // Definition
    return a + b;
}
This code declares and defines a function 'add' that sums two numbers, then calls it in main.
Execution Table
StepActionEvaluationResult
1Declare function 'add'int add(int a, int b);No code run, just tells compiler about 'add'
2Define function 'add'int add(int a, int b) { return a + b; }Function body stored for later use
3Call 'add(3, 4)' in mainadd(3, 4)Function starts with a=3, b=4
4Execute 'return a + b;'3 + 47
5Assign result = 7int result = 7;Variable 'result' now holds 7
6End mainProgram endsProgram finishes successfully
💡 Program ends after main finishes execution
Variable Tracker
VariableStartAfter CallFinal
aundefined3undefined after function ends
bundefined4undefined after function ends
resultundefinedundefined7
Key Moments - 3 Insights
Why do we declare the function before defining it?
Declaration tells the compiler about the function's name and parameters so it can be called before the full definition appears, as shown in step 1 of the execution_table.
What happens when the function is called?
The program jumps to the function definition, runs its code with given arguments (step 3 and 4), then returns the result back to where it was called.
Why does variable 'a' and 'b' become undefined after the function ends?
Because 'a' and 'b' are local to the function 'add', they exist only during the function call and disappear after it returns, as shown in variable_tracker.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the value of 'result' after step 5?
Aundefined
B3
C7
D4
💡 Hint
Check the 'Assign result = 7' action in step 5 of execution_table
At which step does the function 'add' actually run its code?
AStep 2
BStep 4
CStep 3
DStep 1
💡 Hint
Look for 'Execute return a + b;' in execution_table step 4
If we remove the function declaration, what will happen?
ACompiler will give an error when calling 'add'
BFunction will run twice
CProgram will compile and run fine
DResult will be zero
💡 Hint
Declaration in step 1 tells compiler about 'add' before use
Concept Snapshot
Function declaration tells the compiler about a function's name and parameters.
Function definition provides the actual code.
Call the function by its name with arguments.
Function runs, returns a value, then program continues.
Local variables exist only during function execution.
Full Transcript
This visual trace shows how a function is declared and defined in C. First, the function 'add' is declared to inform the compiler about its existence. Then, the function is defined with its code to add two numbers. When 'add' is called in main with arguments 3 and 4, the program runs the function body, calculates the sum, returns 7, and assigns it to 'result'. Local variables 'a' and 'b' exist only during the function call. The program then finishes execution.

Practice

(1/5)
1. What is the purpose of a function declaration in C?
easy
A. To allocate memory for variables inside the function
B. To execute the function's code
C. To tell the compiler about the function's name, return type, and parameters before its use
D. To print the function's output

Solution

  1. Step 1: Understand function declaration role

    A function declaration informs the compiler about the function's name, return type, and parameters so it can be used before its definition.
  2. Step 2: Differentiate declaration from definition

    Declaration does not contain the function's code; that is done in the definition.
  3. Final Answer:

    To tell the compiler about the function's name, return type, and parameters before its use -> Option C
  4. Quick Check:

    Function declaration = Inform compiler [OK]
Hint: Declaration tells compiler about function before use [OK]
Common Mistakes:
  • Confusing declaration with definition
  • Thinking declaration runs the function
  • Assuming declaration allocates memory
2. Which of the following is a correct function declaration in C?
easy
A. int add { int a, int b; };
B. int add(int a, int b) {}
C. add(int a, int b) int;
D. int add(int a, int b);

Solution

  1. Step 1: Identify correct syntax for declaration

    A function declaration includes the return type, function name, parameter list, and ends with a semicolon.
  2. Step 2: Check each option

    int add(int a, int b); matches correct syntax: return type 'int', name 'add', parameters '(int a, int b)', and semicolon. Others have syntax errors or missing semicolon.
  3. Final Answer:

    int add(int a, int b); -> Option D
  4. Quick Check:

    Declaration ends with semicolon [OK]
Hint: Declaration ends with semicolon and no body [OK]
Common Mistakes:
  • Missing semicolon at end
  • Including function body in declaration
  • Wrong parameter syntax
3. What will be the output of this C program?
#include <stdio.h>

int multiply(int x, int y);

int main() {
    printf("%d", multiply(3, 4));
    return 0;
}

int multiply(int x, int y) {
    return x * y;
}
medium
A. 12
B. 7
C. 34
D. Compilation error

Solution

  1. Step 1: Understand function declaration and call

    The function 'multiply' is declared before main and defined after. main calls multiply(3, 4).
  2. Step 2: Calculate function return value

    multiply returns 3 * 4 = 12, which is printed by printf.
  3. Final Answer:

    12 -> Option A
  4. Quick Check:

    3 * 4 = 12 [OK]
Hint: Declaration allows call before definition [OK]
Common Mistakes:
  • Thinking declaration runs code
  • Confusing output with parameters
  • Expecting compilation error due to declaration
4. Identify the error in this function declaration and definition:
int sum(int a, int b)
{
    return a + b
}
medium
A. Function name is invalid
B. Missing semicolon after return statement
C. Parameters must be declared outside parentheses
D. Return type should be void

Solution

  1. Step 1: Check syntax inside function body

    The return statement must end with a semicolon in C.
  2. Step 2: Identify missing semicolon

    Here, 'return a + b' lacks a semicolon, causing a syntax error.
  3. Final Answer:

    Missing semicolon after return statement -> Option B
  4. Quick Check:

    Statements end with semicolon [OK]
Hint: Return statements need semicolon [OK]
Common Mistakes:
  • Omitting semicolon after return
  • Misunderstanding parameter syntax
  • Changing return type unnecessarily
5. You want to declare and define a function that calculates the average of three integers and returns a float. Which of the following is the correct declaration and definition?
hard
A. float average(int a, int b, int c); float average(int a, int b, int c) { return (a + b + c) / 3.0; }
B. int average(int a, int b, int c); int average(int a, int b, int c) { return (a + b + c) / 3.0; }
C. float average(int a, int b, int c); float average(int a, int b, int c) { return (a + b + c) / 3; }
D. float average(int a, int b, int c) { return (a + b + c) / 3; }

Solution

  1. Step 1: Check function declaration matches definition

    Declaration and definition must have same return type (float) and parameters (three ints).
  2. Step 2: Ensure correct calculation for float average

    To get float result, divide by 3.0 (float), not 3 (int).
  3. Step 3: Verify other options

    Integer division (/ 3) causes truncation. Declaring int return but dividing by 3.0 causes type mismatch. Missing declaration prevents prior use.
  4. Final Answer:

    float average(int a, int b, int c); float average(int a, int b, int c) { return (a + b + c) / 3.0; } -> Option A
  5. Quick Check:

    Float division needs 3.0 [OK]
Hint: Use float division (3.0) and matching declaration [OK]
Common Mistakes:
  • Using integer division instead of float
  • Mismatching declaration and definition types
  • Omitting function declaration
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard