标签:
在上一章中,我们已经了解了 C 语言中如何从函数返回数组,类似地,C 允许您从函数返回指针。为了做到这点,您必须声明一个返回指针的函数,如下所示:
1 int * myFunction() 2 { 3 . 4 . 5 . 6 }
另外,C 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。
现在,让我们来看下面的函数,它会生成 10 个随机数,并使用表示指针的数组名(即第一个数组元素的地址)来返回它们,具体如下:
1 #include <stdio.h> 2 #include <time.h> 3 #include <stdlib.h> 4 5 /* 要生成和返回随机数的函数 */ 6 int * getRandom( ) 7 { 8 static int r[10]; 9 int i; 10 11 /* 设置种子 */ 12 srand( (unsigned)time( NULL ) ); 13 for ( i = 0; i < 10; ++i) 14 { 15 r[i] = rand(); 16 printf("%d\n", r[i] ); 17 } 18 19 return r; 20 } 21 22 /* 要调用上面定义函数的主函数 */ 23 int main () 24 { 25 /* 一个指向整数的指针 */ 26 int *p; 27 int i; 28 29 p = getRandom(); 30 for ( i = 0; i < 10; i++ ) 31 { 32 printf("*(p + [%d]) : %d\n", i, *(p + i) ); 33 } 34 35 return 0; 36 }
当上面的代码被编译和执行时,它会产生下列结果:
1 1523198053 2 1187214107 3 1108300978 4 430494959 5 1421301276 6 930971084 7 123250484 8 106932140 9 1604461820 10 149169022 11 *(p + [0]) : 1523198053 12 *(p + [1]) : 1187214107 13 *(p + [2]) : 1108300978 14 *(p + [3]) : 430494959 15 *(p + [4]) : 1421301276 16 *(p + [5]) : 930971084 17 *(p + [6]) : 123250484 18 *(p + [7]) : 106932140 19 *(p + [8]) : 1604461820 20 *(p + [9]) : 149169022
标签:
原文地址:http://www.cnblogs.com/maxin/p/5466618.html