C-函数返回指针

时间:2020-02-23 14:31:55  来源:igfitidea点击:

在本教程中,我们将学习使用C编程语言从函数返回指针。

在上一教程中,我们学习了如何创建将指针作为参数的函数。

现在,让我们继续创建一个将返回指针的函数。

返回指针的函数声明

以下是将返回指针的函数声明语法。

returnType *functionName(param list);

其中," returnType"是函数" functionName"将返回的指针的类型。

" param list"是函数的参数列表,它是可选的。

在下面的示例中,我们以名称" getMax"声明一个函数,该函数将两个整数指针变量作为参数并返回一个整数指针。

int *getMax(int *, int *);

返回指针的函数

在以下示例中,getMax()函数返回一个整数指针,即持有较大值的变量的地址。

#include <stdio.h>

//function declaration
int *getMax(int *, int *);

int main(void) {
    
  //integer variables
  int x = 100;
  int y = 200;
  
  //pointer variable
  int *max = NULL;
  
  /**
   * get the variable address that holds the greater value
   * for this we are passing the address of x and y
   * to the function getMax()
   */
  max = getMax(&x, &y);
  
  //print the greater value
  printf("Max value: %d\n", *max);
  
  return 0;
}

//function definition
int *getMax(int *m, int *n) {

  /**
   * if the value pointed by pointer m is greater than n
   * then, return the address stored in the pointer variable m
   */
  if (*m > *n) {
    return m;
  }
  /**
   * else return the address stored in the pointer variable n
   */
  else {
    return n;
  }
  
}
Max value: 200

我们可以如下表示内存中的两个变量x和y。

因此,在上图中,我们可以看到变量" x"存储在存储位置1000中,而变量" y"存储在存储位置2000中。

然后,我们创建一个整数指针变量" max",该变量将保存值较大的变量的地址。
此时,指针变量" max"存储在存储单元3000中,并存储NULL值。

接下来,我们调用getMax()函数并传递变量xy的地址。

getMax()函数中,参数m获取变量'x'的地址,参数n获取变量y的地址。

因此,整数指针变量m保留变量x的地址,即1000,并分配给内存位置8000。

类似地,整数指针变量n被分配给内存位置8002,并且它保存变量y的地址,即2000。

现在,我们检查的是* m> * n,即指针变量m所指向的值是否大于指针变量n所指向的值。

指针变量m指向的值是100,指针变量n指向的值是200。
因此,if块被忽略,执行else块返回存储在指针变量n中的地址,即2000变量y的

因此,变量y的地址从getMax()函数返回,并存储在整数指针变量max中。
因此,max变量现在拥有地址2000。

最后,我们通过指针变量max打印存储在地址2000中的值。
这将给我们带来更大的价值,即200。