用指针作为函数形参实现函数,函数调用时实参为数组。 4.用指针作为函数形参实现函数,函数调用时实参为指针。

用指针作为函数形参实现函数,函数调用时实参为数组。
4.用指针作为函数形参实现函数,函数调用时实参为指针。


 
#include <iostream>
using namespace std;
void reverse(int *a,int n)
{
      for(int i=0;i<n/2;i++)
      {
          int t = a[i];
          a[i] = a[n-i-1];
          a[n-i-1] = t;
      }
}
int main()
{
    int n,a[1000],*p;
    cin>>n;
    for(int i=0;i<n;i++)
        cin>>a[i];
    p = a;
    reverse(p,n);
    for(int i=0;i<n;i++)
        cout<<a[i]<<" ";
}
 
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7662404
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:指针深入了解——函数指针,函数指针数组,指向函数指针数组的指针。
  • 除此之外, 这篇博客: 回调函数是什么,如何使用以及函数的注册中的 回调函数就是对函数指针的应用。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    定义一个函数指针:

    void (*a) (int b);  //定义一个函数指针a
    

    a是一个函数指针,既然是函数指针就可以把其它函数的地址赋值给a,如下:

    int c (char c1);  int c2 (char c2);   int c3 (char c3);   //任意普通函数
    
    a = c;    a=c2;    a=c3;     //函数注册  
    

    把函数c,c2,c3,赋值给函数指针a的操作就是函数注册,就是一个指针赋值应用而已。

    void f (int i){  //某函数
    	a (i) ; //使用函数指针a,这时的a可以是c,c2,c3,具体看你给a指向哪
    }
    

    **a(i) 就是函数回调。**函数a指向的是函数c的地址,因为上面有做函数注册 。

  • 您还可以看一下 陈槐老师的软件测试全栈系列课程课程中的 常用抓包工具小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    使用指针作为函数形参来处理函数调用时实参为数组或指针的情况,可以通过以下几个步骤来实现:

    1. 定义函数,并在函数参数中使用指针类型来接收数组或指针类型的实参。例如,如果我们要定义一个函数,用于求一个数组的平均值,可以这样定义函数:
    double Avg(int *arr, int len)
    {
        double sum = 0.0;
        for (int i = 0; i < len; ++i) {
            sum += arr[i];
        }
        return sum / len;
    }
    

    在函数参数中,我们定义了一个int类型的指针变量arr,用于接收传入的数组的首地址,以及一个int类型的len变量,表示数组的长度。

    1. 在调用函数时,将数组或指针的首地址作为实参传入即可。例如,如果我们要计算一个整型数组的平均值,可以这样调用函数:
    int a[] = {1, 2, 3, 4, 5};
    double avg = Avg(a, sizeof(a) / sizeof(a[0]));
    

    在调用Avg函数时,将数组a的首地址传入,并通过sizeof运算符计算出数组元素的个数,再将其除以sizeof(int)的结果作为数组的长度传入。

    1. 在函数内部,使用指针来访问数组或指针中的元素。例如,在Avg函数中,我们使用arr[i]来访问数组中的元素。

    2. 如果需要在函数内部修改数组中的元素,可以使用指针来实现。例如,如果我们要编写一个函数,用于将一个数组中的所有元素都加1,可以这样实现:

    void AddOne(int *arr, int len)
    {
        for (int i = 0; i < len; ++i) {
            arr[i] += 1;
        }
    }
    

    在AddOne函数中,我们使用arr[i] += 1来将数组中的元素加1。

    1. 如果需要将数组或指针作为函数返回值返回,可以使用指针来实现。例如,如果我们要编写一个函数,用于返回一个数组中的最大值和最小值,可以这样实现:
    void MinMax(int *arr, int len, int *minVal, int *maxVal)
    {
        *minVal = *maxVal = arr[0];
        for (int i = 0; i < len; ++i) {
            if (arr[i] < *minVal) {
                *minVal = arr[i];
            }
            if (arr[i] > *maxVal) {
                *maxVal = arr[i];
            }
        }
    }
    

    在MinMax函数中,我们使用minVal和maxVal来操作指针所指向的变量,将数组中的最小值和最大值赋值给它们,这样就可以在函数外部访问到该数组的最大值和最小值了。

    通过上述步骤,我们可以使用指针作为函数形参来处理函数调用时实参为数组或指针的情况,并且通过指针来访问数组或指针中的元素,以及通过指针来传递数组或指针作为函数参数。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^