Unit III: Arrays and Pointers
Course: Programming with C
Code: CADSM101
Array Definition and Processing
An array is a collection of data items of the same type stored in contiguous memory locations.
- Definition: Arrays are defined by specifying the data type and the number of elements (e.g.,
int marks[5];).
- Processing: Elements are accessed using an index starting from 0.
- Passing to Functions: Entire arrays can be passed to functions to perform operations on the data set.
Multidimensional Arrays and Strings
- Multidimensional Arrays: C supports arrays of arrays, commonly used for matrices (2D arrays).
- Strings: In C, a string is an array of characters terminated by a null character (
\0).
Pointers: Addresses and Declarations
A pointer is a variable that stores the memory address of another variable.
- Declaration: Pointers are declared using the
* operator (e.g., int *ptr;).
- Addresses: The
& operator is used to get the address of a variable.
Pointers and Function Arguments
Pointers allow functions to modify the original value of variables in the calling function, known as Call by Reference.
- Passing Pointers: Instead of passing a value, the address is passed to the function.
- Utility: This is essential for returning multiple values from a function or manipulating large data structures efficiently.
Address Arithmetic and Arrays
C allows arithmetic operations on pointers, which is closely linked to how arrays work.
- Pointer Arithmetic: Adding an integer to a pointer moves it to the next memory location of its base type.
- One-dimensional Arrays: The name of an array acts as a constant pointer to its first element.
- Character Pointers: Often used to handle strings and dynamic text efficiently.
Pointer Arrays and Pointers to Pointers
- Pointer Arrays: An array where each element is a pointer (e.g., used for arrays of strings).
- Pointers to Pointers: A variable that stores the address of another pointer.
- Initialization: Pointer arrays can be initialized with addresses of variables or string literals.
Command Line Arguments and Function Pointers
- Command Line Arguments: Parameters passed to the
main() function from the terminal (argc and argv).
- Pointers to Functions: Variables that store the starting address of executable code.
- Passing Functions: Function pointers can be passed as arguments to other functions, enabling callbacks.
Exam Focus & Tips
- Exam Tip: Understand the relationship between
array[i] and *(array + i). They are identical in C.
- Common Pitfall: Attempting to increment an array name (e.g.,
arr++) is an error because an array name is a constant pointer.
- Real-world Application: Function pointers are the backbone of "sorting" functions where the comparison logic can be swapped.
Frequently Asked Questions
Q: What is the size of a pointer?
A: The size depends on the system architecture (typically 4 bytes for 32-bit and 8 bytes for 64-bit systems), regardless of the data type it points to.
Q: Why use pointers for function arguments?
A: It allows the function to modify the actual variable in the caller's scope and saves memory by not copying large data sets.