Bird
Raised Fist0
C++programming~10 mins

Function declaration and definition in C++ - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Function declaration and definition
Start
↓
Function Declaration
↓
Function Definition
↓
Call Function
↓
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 add(int a, int b) {  // Definition
    return a + b;
}

int main() {
    int result = add(3, 4);
    return 0;
}
This code declares a function 'add', defines it to return sum of two numbers, then calls it in main.
Execution Table
StepActionEvaluationResult
1Declare function 'add'int add(int a, int b);Function signature known to compiler
2Define function 'add'int add(int a, int b) { return a + b; }Function body ready
3Call add(3, 4) in mainadd(3, 4)Function call initiated
4Execute add bodyreturn 3 + 4;7
5Assign resultint result = 7;Variable 'result' = 7
6End mainreturn 0;Program finished
💡 Program ends after main finishes execution
Variable Tracker
VariableStartAfter Step 5Final
aN/A33
bN/A44
resultUndefined77
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 used before its full code is seen, as shown in Step 1 of the execution_table.
What happens when the function is called?
The program jumps to the function's code, runs it with given inputs, and returns a value, as seen in Steps 3 and 4.
Why do variables 'a' and 'b' have values only during function execution?
Because 'a' and 'b' are parameters local to the function, they get values only when the function runs, shown in variable_tracker after Step 5.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the result of add(3, 4) at Step 4?
A3
B7
C4
DUndefined
💡 Hint
Check Step 4 in execution_table where the function returns the sum.
At which step does the program know about the function signature?
AStep 3
BStep 2
CStep 1
DStep 5
💡 Hint
Look at Step 1 where the function is declared.
If we remove the function declaration, what will happen when calling add(3, 4)?
ACompilation error
BFunction returns 0
CProgram runs normally
DRuntime error
💡 Hint
Without declaration, compiler doesn't know the function signature before call (see Step 1 importance).
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.
Declaration is needed if function is called before definition.
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 name and parameters. Then, the function is defined with its body that returns the sum of two integers. In the main function, 'add' is called with arguments 3 and 4. The program jumps to the function, executes the return statement, and returns 7. This value is assigned to the variable 'result'. Finally, the program ends. Variables 'a' and 'b' are local to the function and get their values only during the function call. The declaration is important so the compiler knows about the function before it is used.

Practice

(1/5)
1. What is the main purpose of a function declaration in C++?
easy
A. To execute the function's code
B. To tell the program the function's name, return type, and parameters
C. To create a variable inside the function
D. To print output to the screen

Solution

  1. Step 1: Understand function declaration role

    A function declaration informs the compiler about the function's name, return type, and parameters without providing the actual code.
  2. Step 2: Differentiate declaration from definition

    The function definition contains the actual code to run, while declaration only tells the program what to expect.
  3. Final Answer:

    To tell the program the function's name, return type, and parameters -> Option B
  4. Quick Check:

    Function declaration = function signature [OK]
Hint: Declaration = function signature only, no code [OK]
Common Mistakes:
  • Confusing declaration with definition
  • Thinking declaration runs code
  • Mixing variable creation with function declaration
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) { return a + b; }
C. int add = (int a, int b);
D. add(int a, int b) int;

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 without a body.
  2. Step 2: Check each option

    int add(int a, int b); matches declaration syntax. int add(int a, int b) { return a + b; } is a definition. Options C and D have invalid syntax.
  3. Final Answer:

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

    Declaration ends with semicolon, no body [OK]
Hint: Declaration ends with semicolon, no braces [OK]
Common Mistakes:
  • Writing function body in declaration
  • Missing semicolon at end
  • Incorrect parameter syntax
3. What will be the output of this code?
int multiply(int x, int y);

int main() {
int result = multiply(3, 4);
std::cout << result;
return 0;
}

int multiply(int x, int y) {
return x * y;
}
medium
A. 0
B. 7
C. Error: multiply not defined
D. 12

Solution

  1. Step 1: Understand function declaration and definition

    The function multiply is declared before main and defined after main, which is allowed in C++.
  2. Step 2: Calculate multiply(3, 4)

    The function returns 3 * 4 = 12, which is printed by std::cout.
  3. Final Answer:

    12 -> Option D
  4. Quick Check:

    3 * 4 = 12 [OK]
Hint: Declaration before use, definition after is valid [OK]
Common Mistakes:
  • Thinking definition must be before main
  • Confusing declaration with definition
  • Expecting compile error without definition before main
4. Identify the error in this code:
void greet();

int main() {
greet();
return 0;
}

void greet() {
std::cout << "Hello!" << std::endl
}
medium
A. Return type of greet should be int
B. Function greet is not declared
C. Missing semicolon after std::endl
D. Missing parentheses in greet call

Solution

  1. Step 1: Check function declaration and definition

    The function greet is declared and defined correctly with void return type and no parameters.
  2. Step 2: Identify syntax error in function body

    The line with std::cout << "Hello!" << std::endl is missing a semicolon at the end, causing a syntax error.
  3. Final Answer:

    Missing semicolon after std::endl -> Option C
  4. Quick Check:

    Statements must end with semicolon [OK]
Hint: Check semicolons after output statements [OK]
Common Mistakes:
  • Forgetting semicolon after std::endl
  • Thinking declaration missing causes error
  • Assuming wrong return type
5. You want to declare a function int max(int a, int b); and define it later. Which of these definitions correctly implements it to return the larger number?
hard
A. int max(int a, int b) { if (a > b) return a; else return b; }
B. int max(int a, int b) { return a + b; }
C. int max(int a, int b) { if (a < b) return a; else return b; }
D. int max(int a, int b) { return 0; }

Solution

  1. Step 1: Understand function purpose

    The function max should return the larger of the two integers a and b.
  2. Step 2: Evaluate each definition

    int max(int a, int b) { if (a > b) return a; else return b; } returns a if a > b, else b, correctly returning the maximum. Options A, B, and C do not correctly return the maximum value.
  3. Final Answer:

    int max(int a, int b) { if (a > b) return a; else return b; } -> Option A
  4. Quick Check:

    Return larger value using if-else [OK]
Hint: Use if (a > b) return a; else return b; [OK]
Common Mistakes:
  • Returning sum instead of max
  • Returning smaller value by mistake
  • Returning constant zero
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