c - 数组元素交换函数

标签 c arrays function pointers swap

我要执行的最后一个任务是交换数组的第一个元素 (array[0] 和数组的最后一个元素 (array[2]) 的值;但是,每当我编译时,我都会收到这三个错误并且似乎无法修复它们:

:4 redefinition of parameter 'array'

:32 incompatible type for argument 1 of 'swap'
:32 incompatible type for argument 2 of 'swap'

这是我的代码:

    #include <stdio.h>

    void
    swap(double *array[0],double *array[2])
       {
       int temp = *array[0];
       *array[0] = *array[2];
       *array[2] = temp;
       }
   int
   main(int argc, char **argv)
       { 

       double array[3] = {0};
       double realNumber;
       printf("array[0] is %f\n",array[0]);
       printf("array[1] is %f\n",array[1]);
       printf("array[2] is %f\n",array[2]);
       printf("enter the first real number:\n");
       scanf("%lf",&realNumber);
       array[0] = realNumber;
       printf("enter the second real number:\n");
       scanf("%lf",&realNumber);
       array[1] = realNumber;
       printf("enter the third real number:\n");
       scanf("%lf",&realNumber);
       array[2] = realNumber;
       printf("array[0] is %f\n",array[0]);
       printf("array[1] is %f\n",array[1]);
       printf("array[2] is %f\n",array[2]);

       swap(double array[0],double array[2]);

       printf("after swapping...\n");
       printf("array[0] is %f\n",array[0]);
       printf("array[1] is %f\n",array[1]);
       printf("array[2] is %f\n",array[2]);
       return 0;
       }

最佳答案

我强烈怀疑,

void
swap(double *array[0],double *array[2])
   {
   int temp = *array[0];
   *array[0] = *array[2];
   *array[2] = temp;
   }

应该是

void
swap(double *array, int a, int b)
   {
   double temp = *array[a]; /* <- it's a double */
   *array[a] = *array[b];
   *array[b] = temp;
   }

并称它为这个

swap(double array[0],double array[2]);

应该是

swap(array,0,2);

最后,如果你愿意,用临时变量传入两个指针并用 swap(array[0], array[2]) 调用它,

void swap(double *a, double *b) 
{ 
  double temp = *a;
  *a = *b;
  *b = temp;
}

关于c - 数组元素交换函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25925603/

相关文章:

c - 未打印正确的字符数组 C

arrays - 在VBA中展平多维数组?

Java GPA数组扫描仪输入和计算

PHP While 语句显示与查询结果相同的结果

JavaScript/NodeJS : Invoking object methods inside the same object: why is "this." mandatory?

c++ - 不使用传递值的函数

c - string.h的源码在哪里获取;不是函数原型(prototype),而是函数的实现

无法将地址传递给指针

c - 使用 typeof 建立单一数据类型

c - 需要指针帮助