A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

指针作为函数的参数

1.     会使用指针间接的操作指针指向的变量。

        指针的作用:通过指针间接的操作指针指向的变量。

2.     当函数的参数类型是 int、float、double、char的时候,这个时候参数的传递是值传递!

          这个时候,在函数内部去修改形参变量的值,对实参没有丝毫的影响。

3.     当这个函数的参数类型是     数组的时候     ,这个时候参数传递是地址传递!

          这个时候,在内部修改形参数组元素的时候,其实修改的就是实参数组的元素。

4.     指针是一种新的数据类型。

          那么指针也可以作为函数的参数!
     1)我们直接可以将指针的声明放在函数后面的小括弧里。此时指针就作为了函数的参数存在了。
     2)当我们调用1个函数的时候,如果这个函数的参数是1个指针,那么我们就必须要为这个指针传递1个和指针类型相同的普通变量的地址。
     3)这个时候,在函数内部去访问参数指针指向的变量的时候,其实访问的就是实参变量。
          例:
               void test(int *p)
          {
               *P = 1000;
          }

               int num = 10;
               int *p = #
               test(p);     //     或者 test(&num);
               printf(“num = %d\n”, num);
               —> num = 1000;
          说明:指针作为函数的参数,实参传递的过程是地址传递!

5.     指针作为函数的参数,可以实现什么效果?

     函数的内部可以修改实参变量的值!

6.     什么时候需要将指针作为函数的参数?!

     1)遇到的问题:
          函数只能返回1个数据
          如果函数需要返回多个数据怎么办?
     2)解决方案
          使用指针作为函数的参数,让调用者将自己的变量的地址传递到函数的内部,函数的内部通过指针就可以修改实参变量的值。
          例:
               int getMaxAndMin(int arr[], int len, int *min)
{
               int max = INT32_MIN;
               *min = INT32_MAX;
               for(int i = 0 ; i < len ; i++)
          {
                    if(arr[i] > max)
                    {
                         max = arr[i];
                    }
                    if(arr[i] < min)
                    {
                         *min = arr[i];
                    }
          }
     return max;
}

                    int main()
{
          //     定义一个变量用来存储数组最小值
          int min = 0;
          //     定义一个指定数组
          int arr[] = {12,3,22,49,3,294,3,2,8,45,82,34,0,4,28};
          int max = getMaxAndMin(arr,sizeof(arr) / sizeof(int), &min);
          printf(“max = %d\nmin = %d\n”, max, min);

       return 0;
}
            
     3)当函数需要返回多个数据的时候就可以使用指针作为函数的参数。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马