【发布时间】:2020-02-23 14:02:11
【问题描述】:
此函数反转指针数组并将其返回给 main。主要问题是代码返回一个 抛出异常:读取访问冲突。 fptr 为 0xCCCCCCCC。
错误的来源是什么?
int* mirror(int* p[], int n) {
int* ptr,* fptr;
int swap;
ptr = p[0];
fptr = p[n-1];
while (fptr > ptr) {
swap = *ptr;
*ptr = *fptr;
*fptr = swap;
ptr++;
fptr--;
}
return *p;
}
【问题讨论】:
-
这段代码完全被破坏了。
swap = *ptr;分配一个整数,而不是一个指针。ptr++增加了一个错误的指针(p的第一个元素,而不是指向p的第一个元素的指针)。p数组的任何元素都不会改变值。 -
您应该将您的参数替换为指向能够根据需要导航它的指针的指针:int* mirror(int** p, int n){
-
@user2019716 它不会改变任何东西,两个定义是等价的
标签: c++ arrays algorithm pointers reverse