2017-06-21 1 views
-1

Ich beginne, wie in C++ zu programmieren. Ich habe gelesen C++ Primer plus (5. Auflage) Buch und stieß auf ein Beispielprogramm, das ich nicht vollständig verstehe. Grundsätzlich fragt das Programm nach Ihrem Nachnamen und gibt Ihnen die Adresse, wo es gespeichert wird:Wie funktioniert diese Funktion? char * getname(); C++

#include <iostream> 
#include <cstring> 
using namespace std; 
char* getname(); 
int main(); 
{ 
    char* name; 
    name = getname(); 
    cout << name << " at " << (int*)name << endl; 
    delete [] name; 

    name = getname(); 
    cout << name << " at " << (int*)name << endl; 
    delete [] name; 

    return 0; 
} 

char* getname() 
{ 
    char temp[80]; 
    cout << "Enter last name: "; 
    cin >> temp; 
    char* pn = new char [strlen(temp)+1]; 
    strcpy(pn, temp); 

    return pn; 
} 

ich nicht ganz bekommen, warum char * getName() Funktion, um den Dereferenzierungsoperator muss. Ich habe ein bisschen Probleme damit, dieses Programm zu verstehen, hehe. Sorry, wenn das wie eine dumme Frage rüberkommt, aber ich bin ziemlich fest. Das ist alles. Danke! ..

+0

Willkommen bei Stack Overflow. Bitte nehmen Sie sich die Zeit, [The Tour] (http://stackoverflow.com/tour) zu lesen und beziehen Sie sich auf das Material aus der [Hilfe] (http://stackoverflow.com/help/asking), was und wie Sie können fragen Sie hier. –

+3

Welcher _dererfeencing Operator_? Es gibt keine lange Déferenzierung. –

+2

Es ist nicht '* getname()' mit Rückgabetyp 'char'. Stattdessen ist es 'getname()' mit Rückgabetyp 'char *'. Google "C Typ Erklärung" für weitere Informationen (das erste Ergebnis ist ziemlich gut). –

Antwort

0

name - es ist ein Zeiger auf erste Char in Folge. std::cout mit << - hat unterschiedliches Verhalten, je nachdem, was Sie ihm geben.

  • Wenn seine Zeiger auf erste Zeichen in Sequenz (char* name) - cout diese Sequenz zu drucken.
  • Wenn seine Zeiger auf int Nummer - cout Druck Adresse dieser Nummer im Speicher (0x1105010)

(int*) - bis int auf Zeiger Gießen.

Verwandte Themen