我正在尝试反转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);
.
.
.
}
答案 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
。