Latest web development tutorials

C gibt ein Array aus einer Funktion

C-Array C - Array

C-Sprache ist nicht eine komplette Array als Parameter zurückkehren. Allerdings können Sie den Array-Namen ohne einen Index geben Sie einen Zeiger auf ein Array zurück. Wir werden die Zeiger im nächsten Kapitel dieses Wissens erklären, können Sie dieses Kapitel überspringen, und zu verstehen, so das Konzept der C-Zeiger nach, kommen in diesem Kapitel zu lernen.

Wenn Sie ein eindimensionales Array aus einer Funktion zurückkehren wollen, müssen Sie eine Funktion Rückkehr einen Zeiger deklarieren, wie folgt:

int * myFunction()
{
.
.
.
}

Darüber hinaus unterstützt das C nicht eine lokale Variable außerhalb der Funktion der Adresse, es sei denn , die Definition von lokalen Variablen alsstatische Variablen zurück.

Lassen Sie uns nun auf die folgende Funktion suchen, die 10 Zufallszahlen zu erzeugen, und ein Array verwenden, um sie zurückkehren, wie folgt:

#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;
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

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-Array C - Array