代码如下。在调用函数reverse_array时,如何将第一个函数参数定义为数组?
#include <stdio.h>
void swap(int* a, int* b);
void reverse_array(int a[], int n) {
int* b = a + n - 1;
while (b > a) {
swap(a, b);
a = a + 1;
b = b - 1;
}
}
void swap(int* ptra, int* ptrb) {
int t;
t = *ptra;
*ptra = *ptrb;
*ptrb = t;
}
main() {
int b[5] = { 1,2,3,4,5 };
reverse_array(b[5], 5);
int x;
for (x = 0; x < 5; x++) {
printf("%d", b[x]);
}
}
最佳答案
b[5]
不是整个数组,而是数组的第 6 个元素(索引从 0 开始),该元素不存在。
您应该传递b
。这将被转换为指向数组第一个元素的指针。
关于c++ - 编译器显示错误消息 "makes pointer from integer without cast"(反转数组)。我该如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59343858/