Unit III: Arrays and Pointers
Course: Programming with C (SEC)
Code: CASEC101
Definition and Array Processing
An array is a fixed-size collection of elements of the same data type stored in contiguous memory locations.
- Definition: Arrays are defined by specifying the base type, name, and size in square brackets.
- Array Processing: Elements are accessed via an index, typically using loops for efficiency.
- Passing Arrays: When an array is passed to a function, the function receives the address of the first element.
Multidimensional Arrays and Strings
C supports complex data structures by nesting arrays or treating them as character sequences.
- Multidimensional Arrays: Commonly used for matrices; data is stored row by row (Row-major order).
- Arrays and Strings: Strings are essentially character arrays terminated by a null character (\0).
Pointers: Addresses and Declarations
Pointers are variables that store the memory address of another variable.
- Pointer Declaration: Uses the asterisk (*) symbol to denote a pointer type (e.g., int *ptr).
- Addresses: The address-of operator (&) is used to retrieve the memory location of a variable.
Pointers and Function Arguments
Using pointers as arguments allows a function to modify the caller's variables directly.
- Passing Pointers: Also known as "Call by Reference," this avoids copying large amounts of data.
- Function Arguments: Enables the return of multiple values through the modified pointers.
Address Arithmetic and Pointer Arrays
Pointers can be manipulated using mathematical operations to traverse memory.
- Address Arithmetic: Incrementing a pointer moves it to the next valid address based on its data type.
- Pointers and One-dimensional Arrays: The array name itself acts as a constant pointer to the first element.
- Character Pointers and Functions: Frequently used for efficient string manipulation and searching.
- Pointer Arrays: An array where each element is itself a pointer.
Pointers to Pointers and Function Pointers
Advanced pointer concepts allow for dynamic and complex memory structures.
- Pointers to Pointers: A variable that stores the address of another pointer.
- Initialization of Pointer Arrays: Often used for arrays of strings where each pointer points to a string literal.
- Pointers to Multidimensional Arrays: Specialized pointers used to navigate through matrix rows and columns.
- Pointers to Functions: Storing the address of a function in a variable to call it dynamically.
Command Line Arguments
Arguments can be passed to the main function at the time of program execution.
- Mechanism: Uses parameters like argc (argument count) and argv (argument vector/array of strings).
- Passing Functions: Functions can be passed to other functions as parameters using pointers.
Exam Focus & Tips
- Exam Tip: Understand that
*(arr + i) is exactly the same as arr[i].
- Common Mistake: Forgetting the null terminator (\0) when defining character arrays as strings manually.
- Programming Task: Practice matrix addition using multidimensional arrays.
Frequently Asked Questions
Q: What is the difference between a pointer and an address?
A: An address is a specific memory location; a pointer is a variable that holds that location.
Q: Why use pointer arrays?
A: They are very efficient for handling arrays of strings with different lengths.