c++ - 编译器显示错误消息 "makes pointer from integer without cast"(反转数组)。我该如何解决这个问题?

标签 c++ c arrays pointers

代码如下。在调用函数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/59326987/

相关文章:

c++ - 你能调试自动矢量化循环吗?

c++ - 如何使用 Valgrind 确定 "still-available"内存泄漏的来源?

c++ - 传递自定义类进行连接(信号和插槽)

c - 大文件内存管理

c - 使用 fscanf 读取文件在 c 中不起作用?

python - 数组的for循环

java - 我的循环中将字符解析为 ascii 与比较我已经设置的分配值之间是否存在问题?

c++ - 按钮应该消耗鼠标事件吗?

c - 非规范化 float 被检测为 NaN。为什么?

javascript - 如何仅显示具有指定值的条目的对象键