📜  使用指针反转数组的程序

📅  最后修改于: 2022-05-13 01:57:49.097000             🧑  作者: Mango

使用指针反转数组的程序

先决条件: C/C++ 中的指针

给定一个数组,编写一个程序来使用指针反转它。

在这个程序中,我们使用 *运算符。 *(星号)运算符表示变量的值。声明时的 *运算符表示 this 是一个指针,否则它表示指针指向的内存位置的值。

  • reverse函数:用于通过指针反转数组
  • 交换函数:用于交换两个内存内容
  • 打印函数:将打印数组

方法:在反向函数中,我们使用两个指针,一个指向数组的开头,另一个指向数组的结尾。这两个指针指向的内存位置的内容被交换,然后第一个指针的值增加,第二个指针的值减少。

例子:

Input : array = 2, 4, -6, 5, 8, -1
Output : reverse_array = -1, 8, 5, -6, 4, 2

Input : array = 1, 4, -6, 8, -10, -12
Output : reverse_array = -12, -10, 8, -6, 4, 1

// CPP program to reverse array
// using pointers
#include 
using namespace std;
  
// Function to swap two memory contents
void swap(int* a, int* b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}
  
// Function to reverse the array through pointers
void reverse(int array[], int array_size)
{
  
    // pointer1 pointing at the beginning of the array
    int *pointer1 = array,
  
        // pointer2 pointing at end of the array
        *pointer2 = array + array_size - 1;
    while (pointer1 < pointer2) {
        swap(pointer1, pointer2);
        pointer1++;
        pointer2--;
    }
}
  
// Function to print the array
void print(int* array, int array_size)
{
  
    // Length pointing at end of the array
    int *length = array + array_size,
  
        // Position pointing to the beginning of the array
        *position = array;
    cout << "Array = ";
    for (position = array; position < length; position++)
        cout << *position << " ";
}
  
// Driver function
int main()
{
  
    // Array to hold the values
    int array[] = { 2, 4, -6, 5, 8, -1 };
  
    cout << "Original ";
    print(array, 6);
  
    cout << "Reverse ";
    reverse(array, 6);
    print(array, 6);
    return 0;
}

输出:

reverse array = -1  8  5  -6  4  2