Essential C++ Pointer and Array Manipulation Techniques

Posted by Anonymous and classified in Computers

Written on in with a size of 3.16 KB

C++ Pointer and Array Operations

This collection demonstrates fundamental C++ techniques for handling pointers, arrays, and memory management.

Core Functions

void squareByPointer(int* n) { 
    *n = (*n) * (*n);
}

void capitalizeFirst(char* word) { 
    word[0] = toupper(word[0]);
}

void fillWithSquares(int* arr, int size) {
    for (int i = 0; i < size; i++)
        arr[i] = i * i;
}

int sumArray(const int* arr, int size) {
    int sum = 0;
    for (int i = 0; i < size; i++)
        sum += arr[i];
    return sum;
}

void swap(int& a, int& b) {
    int temp = a;
    a = b;
    b = temp;
}

int* makeFilledArray(int size, int val) {
    int* arr = new int[size];
    for (int i = 0; i < size; i++)
        arr[i] = val;
    return arr;
}

int* maxPointer(int* a, int* b) {
    return (*a > *b) ? a : b;
}

void reverseArray(int* arr, int size) {
    for (int i = 0; i < size / 2; i++)
        swap(arr[i], arr[size - 1 - i]);
}

void printCharArray(const char* arr) {
    for (int i = 0; arr[i] != '\0'; i++)
        cout << arr[i];
    cout << '\n';
}

void zeroOddIndices(int* arr, int size) {
    for (int i = 1; i < size; i += 2)
        arr[i] = 0;
}

Implementation Example

The following main function executes the logic defined above:

int main() {
    // 1. squareByPointer
    int x = 5;
    squareByPointer(&x);
    cout << "Square of 5: " << x << endl; // 25

    // 2. capitalizeFirst
    char word[] = "hello";
    capitalizeFirst(word);
    cout << "Capitalized: " << word << endl; // Hello

    // 3. fillWithSquares
    int squares[5];
    fillWithSquares(squares, 5);
    cout << "Squares: ";
    for (int i = 0; i < 5; ++i) cout << squares[i] << " ";
    cout << endl; // 0 1 4 9 16

    // 4. sumArray
    int sum = sumArray(squares, 5);
    cout << "Sum of squares: " << sum << endl; // 30

    // 5. swap
    int a = 3, b = 7;
    swap(a, b);
    cout << "Swapped: " << a << ", " << b << endl; // 7, 3

    // 6. makeFilledArray
    int* filled = makeFilledArray(4, 9);
    cout << "Filled array: ";
    for (int i = 0; i < 4; ++i) cout << filled[i] << " ";
    cout << endl; // 9 9 9 9
    delete[] filled; // clean up
    filled = nullptr;

    // 7. maxPointer
    int p = 10, q = 20;
    int* maxPtr = maxPointer(&p, &q);
    cout << "Max value: " << *maxPtr << endl; // 20

    // 8. reverseArray
    int nums[] = {1, 2, 3, 4, 5};
    reverseArray(nums, 5);
    cout << "Reversed: ";
    for (int i = 0; i < 5; ++i) cout << nums[i] << " ";
    cout << endl; // 5 4 3 2 1

    // 9. printCharArray
    const char* text = "Print this!";
    cout << "Char array: ";
    printCharArray(text); // Print this!

    // 10. zeroOddIndices
    int testArr[] = {10, 11, 12, 13, 14, 15};
    zeroOddIndices(testArr, 6);
    cout << "Zero odd indices: ";
    for (int i = 0; i < 6; ++i) cout << testArr[i] << " ";
    cout << endl; // 10 0 12 0 14 0
}

Related entries: