Latest web development tutorials

C renvoie un pointeur d'une fonction

C Pointer C Pointer

Dans le dernier chapitre, nous avons appris le langage C comment retourner un tableau à partir d'une fonction. De même, C vous permet de revenir de la fonction pointeur. Pour ce faire, vous devez déclarer une fonction renvoyant un pointeur, comme suit:

int * myFunction()
{
.
.
.
}

En outre, C ne prend pas en charge retournant une variable locale en dehors de l'adresse de la fonction, à moins que la définition des variables locales en tant que variablesstatiques.

Maintenant, regardons la fonction suivante, qui va générer 10 nombres aléatoires, et le nom du tableau qui représente des pointeurs (adresse du premier élément du tableau) à leur retour, comme suit:

#include <stdio.h>
#include <time.h>
#include <stdlib.h> 

/* 要生成和返回随机数的函数 */
int * getRandom( )
{
   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 = getRandom();
   for ( i = 0; i < 10; i++ )
   {
       printf("*(p + [%d]) : %d\n", i, *(p + i) );
   }
 
   return 0;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

1523198053
1187214107
1108300978
430494959
1421301276
930971084
123250484
106932140
1604461820
149169022
*(p + [0]) : 1523198053
*(p + [1]) : 1187214107
*(p + [2]) : 1108300978
*(p + [3]) : 430494959
*(p + [4]) : 1421301276
*(p + [5]) : 930971084
*(p + [6]) : 123250484
*(p + [7]) : 106932140
*(p + [8]) : 1604461820
*(p + [9]) : 149169022

C Pointer C Pointer