Unit II: Functions and Program Structure
Course: Programming with C (SEC)
Code: CASEC101
Defining and Accessing Functions
Functions are the building blocks of a C program, allowing for modularity and code reuse.
- Defining Functions: A function definition consists of a return type, a function name, and a set of parameters enclosed in parentheses.
- Accessing Functions: Functions are accessed (or called) from other functions like
main()to perform their specific task.
Passing Arguments and Data Types
Data is transferred to functions through arguments, which must have specified data types.
- Argument Data Types: You must explicitly specify the data type (e.g., int, float) for each argument in the function header.
- Illustration with Examples: Using functions to solve specific problems, such as finding factorials or processing strings, helps clarify how data moves through a program.
Function Prototypes and Return Types
Prototypes provide the compiler with necessary information about a function before it is used.
- Function Prototypes: A declaration that tells the compiler the function's name, its return type, and the types of its parameters.
- Returning Non-integers: While many functions return integers, C allows functions to return other types like
float,double, orchar.
Storage Classes
Storage classes determine the visibility (scope) and lifetime of variables in C.
| Class | Keyword | Scope | Lifetime |
|---|---|---|---|
| Automatic | auto | Inside the block/function. | Function execution duration. |
| External | extern | Global (across files). | Program execution duration. |
| Static | static | Inside the block/function. | Program execution duration (value is retained). |
| Register | register | Inside the block/function. | Function execution duration (stored in CPU register). |
Scope Rules and Block Structure
Scope rules define where a variable is accessible within the program.
- Scope Rules: Local variables are only visible within their defined block, whereas global (external) variables can be seen throughout the file.
- Block Structure: C uses curly braces
{}to define blocks of code, allowing for nested scopes where variables can be protected or shared. - Header Files: Used to share function prototypes and global definitions across different source files (e.g.,
stdio.h).
Recursion in C
Recursion occurs when a function calls itself to solve a smaller version of the same problem.
- Recursive Programs: Useful for problems with a repetitive nature, such as the Tower of Hanoi or generating the Fibonacci sequence.
- Base Case: Every recursive function must have a termination condition to prevent infinite calls.
The C Preprocessor
The preprocessor handles directives that begin with # before the actual compilation starts.
- Functionality: It handles file inclusion (
#include), macro expansion (#define), and conditional compilation.
Exam Focus & Tips
- Exam Tip: Be prepared to write a recursive function for Tower of Hanoi or Fibonacci.
- Common Mistake: Forgetting to use the
statickeyword when a variable needs to retain its value between function calls. - Mnemonic: "E-A-S-R" for Storage Classes: Extern, Auto, Static, Register.
Frequently Asked Questions
Q: What is a recursive function?
A: It is a function that calls itself to solve a sub-problem.
Q: Why are header files used?
A: To include function prototypes and declarations so that functions defined in other files can be used correctly.