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

返回上一级

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.