如何反转char指针数组的地址

时间:2017-10-12 20:15:04

标签: c++ pointers reverse

我正在尝试反转char指针数组的地址,程序正在运行,但它没有显示任何内容并停止。

void swapArr(char ** arr, int n)
{
    int i;
    char ** temp;   
    for(i=0;i<n;i++)
    {
        *temp=arr[i];
        arr[i]=arr[n-i+1];
        arr[n-i+1]=*temp;
    }       
}

void main()
{
.
.
.
      cin>>lenArr;
      char *arr = new char[lenArr];
      swapArr(&arr,lenArr);
.
.
.
}

2 个答案:

答案 0 :(得分:0)

要交换指针中地址的内容,您需要交换指针的内容(而不是指针指向的内容)。这可能会导致未定义的行为,因为您正在使指针指向其他位置。

注意:以下是未经测试的

char * my_pointer = "Hello";
char * temp_pointer = my_pointer;
cout << "before reversing the pointer: " << static_cast<void *>(temp_pointer) << "\n";
std::reverse(static_cast<uint8_t *>(&my_pointer),
             static_cast<uint8_t *>(&my_pointer) + sizeof(my_pointer));
cout << "after reversing the pointer: " << static_cast<void *>(my_pointer) << endl;

编辑1:反转指针数组
给出:

  char * array_of_pointers[25];

您可以使用:

  std::reverse(&array_of_pointers[0], &array_of_pointers[25]);

答案 1 :(得分:0)

您必须为temp分配内存。在声明temp -

期间执行以下操作
char ** temp= new char *[(const int) n];   

但是,如果您使用C ++,最好在您的案例中使用std::string