Functions and Files Terminology
Overview of function and file concepts you'll learn in this chapter.
Functions and Files - Terminology Reference
This lesson provides a comprehensive reference of all the key C++ terminology you'll encounter throughout the chapter. Think of it as your programming vocabulary guide for functions, files, and program organization - these are the essential terms every C++ programmer needs to know when building larger programs.
How to Use This Reference
Don't memorize everything now! This lesson is designed to be a reference you come back to as needed:
- First time through: Read quickly to get familiar with the terms
- During other lessons: Return here when you encounter unfamiliar terminology
- When stuck: Use this as a quick lookup guide
- Before quizzes: Review relevant sections to refresh your memory
Functions Fundamentals
| Term | Definition | Example |
|---|---|---|
| Function | A named group of statements that perform a specific task and can be called from other code | See below |
| Function call | The act of executing a function by using its name followed by parentheses | add(5, 3) |
| Function body | The statements enclosed in curly braces that make up the function's implementation | { return width * width; } |
| Return type | Specifies what type of value (if any) the function gives back to the caller | int, double, void |
| Return value | The actual value that a function sends back to the code that called it | 42 in return 42; |
| Return statement | Statement that exits a function and optionally sends a value back | return result; |
| Void function | A function that performs actions but doesn't return a value | void printMessage() |
| Value-returning | A function that performs calculations and returns a result | See below |
Function Example
int add(int a, int b) {
return a + b;
}
Function Parameters & Arguments
| Term | Definition | Example |
|---|---|---|
| Parameter | A variable declared in a function header that receives values from the caller | int x in void func(int x) |
| Argument | The actual value passed to a function when it's called | 5 in func(5) |
| Parameter list | All parameters in a function header, separated by commas | (int a, int b, double c) |
| Argument list | All arguments in a function call, separated by commas | func(10, 20, 3.14) |
| Pass by value | Method where function receives copies of argument values | func(x) func gets a copy of x |
| Local variable | A variable declared inside a function, only accessible within that function | int sum in { int sum = a + b; } |
Scope & Lifetime
| Term | Definition | Example |
|---|---|---|
| Scope | The region of code where a variable can be accessed | Inside vs outside functions |
| Local scope | The area inside a function where local variables can be accessed | Within function braces { } |
| Global scope | The area outside all functions where global variables can be accessed | Outside any function |
| Variable lifetime | How long a variable exists in memory during program execution | Function call duration |
| Out of scope | When a variable cannot be accessed because it's outside its defined region | Using local var outside of functions |
| Shadowing | When a local variable has the same name as a global variable, hiding the global | Local x hiding global x |
Understanding Scope
Scope determines where in your program a variable can be accessed. Think of scope as the "visibility zone" for your variables - some variables are visible everywhere, while others are only visible in specific areas of your code.
Variable Shadowing occurs when you create a local variable with the same name as a global variable. The local variable "shadows" (hides) the global one within that scope. It's like having two people named "John" in different rooms - when you're in the local room, "John" refers to the person in that room, not the one outside.
Four Main Scope Areas with Shadowing example
#include <iostream>
// 1. GLOBAL SCOPE - Variables here are visible everywhere
int globalCounter = 0;
int number = 100;
// 2. FUNCTION SCOPE - Each function creates its own scope
void demonstrateScope() {
int localNumber = 42; // Local variable
int number = 50; // Shadows global variable
// 3. BLOCK SCOPE - Nested scope within function
{
int blockVariable = 10;
std::cout << "Block can access: " << localNumber << ", " << blockVariable << '\n';
// blockVariable only exists in this block
}
// Variable Shadowing in action
std::cout << "Local number: " << number << '\n'; // Prints: 50 (local)
std::cout << "Global number: " << ::number << '\n'; // Prints: 100 (global)
// std::cout << blockVariable; // ERROR: Out of scope
}
int calculateSum(int a, int b) {
// 4. PARAMETER SCOPE - Parameters act like local variables
int result = a + b;
globalCounter++; // Can access globals
return result;
}
int main() {
std::cout << "Initial global: " << number << '\n'; // Prints: 100
demonstrateScope();
calculateSum(5, 3);
std::cout << "Global unchanged: " << number << '\n'; // Still prints: 100
return 0;
}
Function Organization
| Term | Definition | Example |
|---|---|---|
| Function definition | Provides the actual implementation/body of the function | See Function Example above |
| Function declaration | Tells compiler about function's existence without providing implementation | int add(int a, int b); |
| Function signature | The function's name and parameter types (used to identify unique functions) | add(int, int) (has no return type or name) |
| Forward declaration | Declaring a function before defining it, allows calling before definition | void process(int count); |
| Function prototype | Another term for forward declaration, shows function interface | See Function prototype above |
| Function overloading | Having multiple functions with same name but different parameters (compiler uses function signatures) | print(int) vs print(string) |
Files & Program Structure
| Term | Definition | Example |
|---|---|---|
| Source file | A file containing C++ code implementation, typically with .cpp extension | main.cpp, utils.cpp |
| Header file | A file containing declarations and interfaces, typically with .h extension | utils.h, constants.h |
| Interface | The public-facing declarations that other code can use, usually in .h files | Function prototypes |
| Implementation | The actual code that performs the work, usually in .cpp files | Function bodies |
| Translation unit | A single source file along with all the headers it includes | One .cpp + its includes |
| Compilation unit | Another term for translation unit | Same as translation unit |
Header Files & Include System
| Term | Definition | Example |
|---|---|---|
| #include directive | Preprocessor command that inserts contents of another file | #include "myheader.h" |
| System header | Standard library headers provided by the compiler | #include <iostream>, #include <string> |
| User-defined header | Headers created by the programmer for their specific project | "calculator.h" |
| Angle brackets | Used for including system/standard library headers | #include <iostream> |
| Double quotes | Used for including user-defined headers | #include "myfile.h" |
| Header guard | Mechanism to prevent a header from being included multiple times | #ifndef, #define, #endif |
| Include guard | Another term for header guard | Same as header guard |
| Multiple inclusion | Problem when same header is included multiple times causing errors | Solved by header guards |
Preprocessor Concepts
| Term | Definition | Example |
|---|---|---|
| Preprocessor | Tool that processes code before compilation, handles #directives | Handles all # commands |
| Preprocessor directive | Commands starting with # that are processed before compilation | #include, #define |
| Macro | Text replacement performed by preprocessor | #define PI 3.14159 |
| Conditional compilation | Using preprocessor to include/exclude code based on conditions | #ifdef DEBUG |
| #ifndef | "If not defined" - used in header guards | #ifndef MYHEADER_H |
| #define | Defines a macro or symbol for preprocessor | #define MYHEADER_H |
| #endif | Ends a conditional preprocessor block | Closes #ifndef block |
Namespaces
| Term | Definition | Example |
|---|---|---|
| Namespace | A named scope that groups related functions, variables, and types | std namespace |
| std namespace | Standard namespace containing all standard library components | std::cout, std::cin |
| Scope resolution | Using :: operator to specify which namespace a name belongs to | std::cout |
| Using declaration | Brings specific names from a namespace into current scope | using std::cout; |
| Using directive | Brings all names from a namespace into current scope | using namespace std; |
| Naming collision | When two or more names conflict in the same scope | Two functions named add |
| Global namespace | The default namespace when no specific namespace is declared | Outside any namespace usually in the global scope |
Effective Function Design Practices
| Term | Definition | Example |
|---|---|---|
| Single responsibility | Each function should have one clear, well-defined purpose | calculateTax() only calculates tax |
| Function naming | Using descriptive names that clearly indicate function purpose | calculateMonthlyPayment() |
| Parameter validation | Checking that function inputs are valid before processing | Checking for negative values |
| Function documentation | Comments explaining what function does, its parameters and return | Comments above function header |
| Pure function | Function that always returns same output for same input, no side effects | Mathematical calculations |
| Side effect | When function modifies something outside its own scope | Printing to console |
Common Development Process Terms
| Term | Definition | When Used |
|---|---|---|
| Top-down design | Starting with main problem and breaking into smaller sub-problems | Planning program structure |
| Bottom-up design | Building small components first, then combining into larger system | Building utility functions |
| Incremental development | Adding one function at a time and testing before adding more | Step-by-step programming |
| Code refactoring | Improving code structure without changing its functionality | After getting code working |
| Function testing | Verifying that individual functions work correctly in isolation | Before integration |
Error Handling & Debugging
| Term | Definition | Example |
|---|---|---|
| Function call stack | The sequence of function calls currently active in program | main() → func1() → func2() |
| Stack overflow | Error when too many function calls exceed available memory | Infinite recursion |
| Function signature mismatch | When function call doesn't match declaration parameters | Calling add(int) with add(int,int) |
Next Steps
Create an account to track your progress and access interactive exercises. Already have one? Sign in.
Functions and Files Terminology - Quiz
Test your understanding of the lesson.
Lesson Discussion
Share your thoughts and questions
No comments yet. Be the first to share your thoughts!