C-Programm zum Umkehren eines Arrays mithilfe von Zeigern

C-Programm zum Umkehren eines Arrays mithilfe von Zeigern

Schreiben Sie ein C-Programm, um Elemente in ein Array einzugeben und das Array mithilfe von Zeigern umzukehren. Wie man ein Array mit Zeigern in der C-Programmierung umkehrt. Logik zum Umkehren eines Arrays mit Zeigern in C.

Beispiel

Eingabe

Input array elements: 10 20 30 40 50 60 70 80 90 100

Ausgabe

Reversed array: 100 90 80 70 60 50 40 30 20 10

Erforderliche Kenntnisse

Grundlegende C-Programmierung, Array, Zeiger, Zeigerarithmetik, Zeiger und Array

Logik zum Umkehren des Arrays mithilfe von Zeigern

In früheren Beiträgen haben wir gelernt, ein Array ohne Zeiger umzukehren. Hier werden wir lernen, ein Array mit Zeigern umzukehren.

Unten ist die Schritt-für-Schritt-Beschreibungslogik, um ein Array mit Zeigern umzukehren.

  1. Gib Größe und Array-Elemente ein, speichere sie in einer Variablen, sagen wir size und arr .
  2. Initialisieren Sie einen Zeiger auf das erste Element des Arrays, sagen wir * left = arr .
  3. Initialisieren Sie einen weiteren Zeiger auf das letzte Element des Arrays, sagen wir * right = (arr + size - 1) .
  4. Um ein Array umzukehren, verwende ich zwei Zeiger, einen von der linken Seite des Arrays und einen von der rechten Seite. Wir werden alle aufeinanderfolgenden Elemente von links nach rechts bis zum mittleren Element tauschen.

    Ich habe den bitweisen XOR-Operator verwendet, um zwei aufeinanderfolgende Elemente des Arrays auszutauschen. Um zwei Elemente zu vertauschen, führen Sie

    aus
    *left    ^= *right;
    *right   ^= *left;
    *left    ^= *right;
  5. Inkrementiere den linken Zeiger und dekrementiere den rechten Zeiger um 1.
  6. Wiederholen Sie Schritt 4 und 5 bis (left < right) .

Programm zum Umkehren eines Arrays mithilfe von Zeigern

/**
 * C program to reverse an array using pointers
 */

#include <stdio.h>

#define MAX_SIZE 100

/* Function declaration */
void printArr(int *arr, int size);


int main()
{
    int arr[MAX_SIZE];
    int size;
    int *left = arr;  // Pointer to arr[0]
    int *right;


    // Input size of array
    printf("Enter size of array: ");
    scanf("%d", &size);

    right = &arr[size - 1];  // Pointer to arr[size - 1]

    /*
     * Input elements in array
     */
    printf("Enter elements in array: ");
    while(left <= right)
    {
        scanf("%d", left++);
    }


    printf("\nArray before reverse: ");
    printArr(arr, size);


    // Make sure that left points to arr[0]
    left = arr;


    // Loop to reverse array
    while(left < right) 
    {
        /*
         * Swap element from left of array to right of array.
         */
        *left    ^= *right;
        *right   ^= *left;
        *left    ^= *right;

        // Increment left array pointer and decrement right array pointer
        left++;
        right--;
    }


    printf("\nArray after reverse: ");
    printArr(arr, size);


    return 0;
}



/**
 * Function to print array using pointer.
 *
 * @arr     Pointer to array.
 * @size    Size of the array.
 */
void printArr(int * arr, int size)
{
    // Pointer to arr[size - 1]
    int * arrEnd = (arr + size - 1);

    /* Loop till last array element */
    while(arr <= arrEnd)
    {
        printf("%d, ", *arr);

        // Move pointer to next array element.
        arr++;
    }
}

Ausgabe

Enter size of array: 10
Enter elements in array: 10 20 30 40 50 60 70 80 90 100

Array before reverse: 10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
Array after reverse: 100, 90, 80, 70, 60, 50, 40, 30, 20, 10,

Empfohlene Beiträge

  • Index der Übungen zur Array- und Matrixprogrammierung.
  • C-Programm zum Vertauschen zweier Zahlen mit Hilfe von Zeigern.
  • C-Programm zur Eingabe und Anzeige von Arrays mit Zeigern.
  • C-Programm zum Kopieren eines Arrays in ein anderes Array mithilfe von Zeigern.
  • C-Programm zum Austauschen zweier Arrays mithilfe von Zeigern.