Latest web development tutorials

C retourne un tableau à partir d'une fonction

C tableau C tableau

Langage C ne peut pas retourner une gamme complète en tant que paramètre. Cependant, vous pouvez spécifier le nom du tableau sans index pour renvoyer un pointeur vers un tableau. Nous allons expliquer le pointeur dans le prochain chapitre de cette connaissance, vous pouvez sauter ce chapitre, et ainsi de comprendre le concept de pointeurs C après, venu pour apprendre dans ce chapitre.

Si vous voulez retourner un tableau à une dimension à partir d'une fonction, 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 utiliser un tableau pour les renvoyer, comme suit:

#include <stdio.h>

/* 要生成和返回随机数的函数 */
int * getRandom( )
{
  static int  r[10];
  int i;

  /* 设置种子 */
  srand( (unsigned)time( NULL ) );
  for ( i = 0; i < 10; ++i)
  {
     r[i] = rand();
     printf( "r[%d] = %d\n", i, 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:

r[0] = 313959809
r[1] = 1759055877
r[2] = 1113101911
r[3] = 2133832223
r[4] = 2073354073
r[5] = 167288147
r[6] = 1827471542
r[7] = 834791014
r[8] = 1901409888
r[9] = 1990469526
*(p + 0) : 313959809
*(p + 1) : 1759055877
*(p + 2) : 1113101911
*(p + 3) : 2133832223
*(p + 4) : 2073354073
*(p + 5) : 167288147
*(p + 6) : 1827471542
*(p + 7) : 834791014
*(p + 8) : 1901409888
*(p + 9) : 1990469526

C tableau C tableau