C 语言 从函数返回指针
在上一章中,我们已经学习了 C 语言中如何从函数返回数组,类似地,C 允许我们从函数返回指针。
为了做到这点,我们必须声明一个返回指针的函数
int * myFunction() { ... }
注意
C 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。
范例: 函数中返回指针
这个范例会生成 10 个随机数,并返回使用表示指针的数组名(即第一个数组元素的地址)
/** * file: main.c * author: 简单教程(www.twle.cn) */ #include <stdio.h> #include <time.h> #include <stdlib.h> /* 要生成和返回随机数的函数 */ int * get_random( ) { static int r[10]; int i; srand( (unsigned)time( NULL ) ); for ( i = 0; i < 10; ++i) { r[i] = rand(); printf("%d\n", r[i] ); } return r; } int main () { int *p; int i; p = get_random(); printf("\n"); for ( i = 0; i < 10; i++ ) { printf("*(p + [%d]) : %d\n", i, *(p + i) ); } printf("\n"); return 0; }
编译和运行上面的范例,输出结果如下
$ gcc main.c && a.out 1684712392 389286649 1505520981 1638798713 1812196616 1975443358 1179335286 1961573639 2146685576 1619206232 *(p + [0]) : 1684712392 *(p + [1]) : 389286649 *(p + [2]) : 1505520981 *(p + [3]) : 1638798713 *(p + [4]) : 1812196616 *(p + [5]) : 1975443358 *(p + [6]) : 1179335286 *(p + [7]) : 1961573639 *(p + [8]) : 2146685576 *(p + [9]) : 1619206232