C-函数返回指针
在本教程中,我们将学习使用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()
函数并传递变量x
和y
的地址。
在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。