Latest web development tutorials

C gibt einen Zeiger aus einer Funktion

C Pointer C Pointer

Im letzten Kapitel haben wir die C-Sprache gelernt, wie ein Array aus einer Funktion zurückzukehren. Ebenso C die Funktionszeiger zurückkehren können. Um dies zu tun, 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 der Name des Arrays, die Zeiger (dh Adresse des ersten Array-Element) stellt sie zurück, wie folgt:

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

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

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