【发布时间】:2017-02-08 06:40:41
【问题描述】:
我有一个创建和填充数组的程序。然后它被发送到一个名为 reverse 的函数,该函数反转数组中的顺序。编译器不断报错。我不太清楚为什么。
代码
void reverse(int* array, int size) {
for (int i = 0; i < size/2; i++) {
int temp = array[i];
array[i] = array[size-i];
array[size-i] = temp;
} // end of for loop
} // end of reverse
int main( int argc, char** argv ) {
int array[8];
// get and print size of the array
int size = sizeof(array) / sizeof(array[0]);
printf("Size is %d\n", size);
// populate array
for (int i = 0; i < size; i++) {
array[i] = i;
} // end of for loop
// display array before reversing
for (int i = 0; i < size; i++) {
printf("%d ", array[i]);
} // end of for loop
// new line
printf("\n");
// reverse the array
reverse(&array, size);
// display the array again after reversing
for (int i = 0;i < size; i++) {
printf("%d ", array[i]);
} // end of for loop
} // end of main
它一直给我这个错误
main.cc:17:14: error: indirection requires pointer operand ('int' invalid)
int temp = *array[i];
^~~~~~~~~
main.cc:18:3: error: indirection requires pointer operand ('int' invalid)
*array[i] = *array[size-i];
^~~~~~~~~
main.cc:18:15: error: indirection requires pointer operand ('int' invalid)
*array[i] = *array[size-i];
^~~~~~~~~~~~~~
main.cc:19:3: error: indirection requires pointer operand ('int' invalid)
*array[size-i] = temp;
^~~~~~~~~~~~~~
4 errors generated.
make: *** [main.o] Error 1
【问题讨论】:
-
当我将它发送到反向时,我删除了数组变量前面的 &。虽然它给了我我认为的地址位置。下面是输出。这是为什么?我的代码中没有打印语句故意打印任何地址。输出:0 1 2 3 4 5 6 7 1412676568 7 6 5 4 3 2 1 [0.5s完成]
-
您的反向函数有一个错误。想想当 i == 0 时会发生什么。
-
你的代码是
int temp = array[i];,错误是int temp = *array[i];。发布的代码是正确的。请确保您发布的代码会产生您将来询问的错误。 -
@ConradoSanchez:这是一个不同的问题。您需要单独询问。 (但人们已经告诉过你两次,这是一个错误的错误)。