C Programming Fundamentals: Arrays, Functions, and Search Algorithms
Array Initialization Methods in C
Arrays in C can be initialized in two main ways:
1. Compile-Time Initialization
Values are assigned at the time of declaration.
int arr[5] = {1, 2, 3, 4, 5};
If fewer values are provided than the array size, the unused elements are automatically initialized to 0:
int arr[5] = {1, 2}; // arr = {1, 2, 0, 0, 0}
2. Run-Time Initialization
Values are entered during execution using input functions like scanf()
.
int arr[5], i;
for(i = 0; i < 5; i++) {
scanf("%d", &arr[i]);
}
Pros and Cons of Using C Arrays
Advantages of Arrays
- Efficient storage of similar data types.
- Index-based access allows fast retrieval of elements.
- Easy to traverse and manipulate using loops.
Disadvantages of Arrays
- Fixed size: The size cannot be changed during execution.
- No bounds checking: Accessing out-of-bound elements causes undefined behavior.
- Static memory allocation (typical for standard arrays).
Understanding Array Indexing (Subscripts)
An index or subscript is a number used to access specific elements in an array. Array indexing always starts from 0.
int arr[3] = {10, 20, 30};
printf("%d", arr[1]); // Outputs 20
Valid Data Types for Indexes
Indexes must be of an integer type, such as int
, short
, or char
.
C Program Example: Reversing a 3-Digit Number
This program demonstrates basic arithmetic operations to reverse a three-digit integer.
#include <stdio.h>
int main() {
int num, rev;
printf("Enter a 3-digit number: ");
scanf("%d", &num);
// Logic: Extract digits and reconstruct the number in reverse order
rev = (num % 10) * 100 + ((num / 10) % 10) * 10 + num / 100;
printf("Reversed: %d", rev);
return 0;
}
C Array Definition and Declaration Syntax
What is an Array?
An Array is a collection of elements of the same data type stored in contiguous memory locations.
Declaration Syntax
Declaring an array reserves memory space based on the specified size:
int arr[5];
This declares an integer array named arr
of size 5.
Initialization Example
int marks[3] = {80, 90, 100};
Function Declaration vs. Definition in C
Function Declaration (Prototype)
The declaration, also known as the function prototype, informs the compiler about the function’s name, return type, and parameters.
int add(int, int); // Declaration/Prototype
Importance of Prototypes
- Helps the compiler catch type mismatches.
- Supports modular programming by allowing functions to be defined after
main()
.
Function Definition
The definition provides the actual body (implementation) of the function, detailing the operations it performs.
int add(int a, int b) {
return a + b;
}
Single vs. Multidimensional Arrays in C
Single-Dimensional Arrays
These arrays require only one index to access elements (conceptually like a list or vector).
int a[5];
Multidimensional Arrays
These arrays require more than one index (e.g., a matrix or table).
int b[2][3];
Access Example: b[1][2]
refers to the element located in the 2nd row and 3rd column.
Implementing Binary Search in C
Binary search is an efficient algorithm for finding an item from a sorted list of items. It works by repeatedly dividing the search interval in half.
#include <stdio.h>
int binarySearch(int arr[], int n, int key) {
int low = 0, high = n - 1, mid;
while (low <= high) {
mid = (low + high) / 2;
if (arr[mid] == key)
return mid;
else if (arr[mid] < key)
low = mid + 1;
else
high = mid - 1;
}
return -1; // Element not found
}
int main() {
int arr[] = {1, 3, 5, 7, 9}; // Array must be sorted
int index = binarySearch(arr, 5, 7);
if(index != -1)
printf("Element found at index %d", index);
else
printf("Element not found");
return 0;
}
Output
Element found at index 3
C Function Components: Definition, Declaration, and Calling
What is a Function?
A Function is a self-contained block of code designed to perform a specific, reusable task.
Declaration
int square(int); // Prototype
Definition
int square(int x) {
return x * x;
}
Calling the Function
Executing the function by passing required arguments:
int result = square(5);