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/59343858/

相关文章:

c++ - 接收整个 UDP 数据包

c++ - 弯路 - jmp 00000000

c++ - 在 Visual C++ 项目中链接 sqlite.lib

c++ - 这相当于什么? SFML

C DLL 和新数据服务进程之间基于云的 IPC

c - 我怎样才能编写工作函数?

java - 在 Ubuntu Linux 中查找 C/C++ 源代码的最佳工具是什么?

arrays - swift中连续数组的数据结构

c# - 在 C# 中按最后而不是第一个调整数组大小

javascript - 如何简化根据属性组合两个数组的 es6 函数?