2012-04-03 4 views
1

Ich habe ein Programm, das für mich eingerichtet wurde und ich musste nur die Lücken ausfüllen. Es gab eine Funktion an der Unterseite, die ich nicht berühren musste, aber nicht verstehe, warum der Rückgabetyp der Funktion char* und nicht nur char war.Was bedeutet char * als Rückgabetyp für eine Funktion?

/*Main Function from where it is called */ 

char * check(char * name, double sx[], double t[], int n); 

/*Function*/ 

char * check(char * name, double sx[], double t[], int n) 
{ 

int i; 
for(i = 0 ; i < n ; i++) 
    {  
     if(fabs(sx[i] - t[i]) > EPSILON) 
      return (strcat(name, " check fails")); 
     else 
      return (strcat(name, " check is OK")); 
    } 
} 

Ich verstehe nicht, warum das ist.

Antwort

0

char * bedeutet einen Zeiger auf ein Zeichen. In C-Strings sind ein Array von Zeichen durch das Nullzeichen abgeschlossen.

2

Dies liegt daran, dass die Funktion kein einzelnes Zeichen zurückgibt. Stattdessen gibt es eine Adresse zurück, die auf ein Zeichen PUNKT (daher der Name Zeiger), und es wird durch eine * bezeichnet. Dies ist notwendig, da Sie kein einzelnes Zeichen, sondern eine Liste von Zeichen verwenden, um einen Satz (oder eine Zeichenfolge) zu bilden.

Da ein String mit einem '\ 0' Zeichen endet, können andere Funktionen den Speicher durchlaufen, bis sie dieses Zeichen erreichen. Bitte lesen Sie diesen Teil auf Zeiger: http://computer.howstuffworks.com/c20.htm

Oder besser: lesen Sie das gesamte C-Tutorial. Es ist gut geschrieben und sollte viel abklären.

0

char * ist ein Zeiger auf das erste Zeichen in der Rückgabe "Zeichenfolge" (Char-Array).
obwohl die Größe des Arrays nicht angegeben ist, sind in C "string" s null terminiert. Das bedeutet, dass Sie die Zeichen der Position, auf die der Zeiger gesetzt ist, lesen können, bis Sie auf ein Nullzeichen ('\ 0') stoßen.