2016-11-01 2 views
1

Kann ich die ganze Zahl aus der Char-Tabelle holen? Zum Beispiel:Char 2D Array behandelt Zeichen getrennt

char *table[]={"A","123","2"}; 

Ich möchte Nummer anzuzeigen 123, aber wenn ich

nennen
cout<<*table[1]; 

ich

1 

Kann ich dieses Problem beheben?

+0

Haben Sie nur 'table [1]' versucht? – stark

+0

Es funktioniert, warum? Wie unterscheidet es sich von * Tabelle [1]? – Mikkey

+0

Und ich muss auf * Tabelle [] arbeiten, weil die Funktion main solche Parameter haben. Ich versuchte, es auf dem anderen Tisch zu streichen, aber es sagte, dass die Typen nicht übereinstimmen – Mikkey

Antwort

0

Wenn Sie Char *table[]={"A","123","2"} schreiben, deklarieren Sie ein Array von Zeichenzeigern. In gewissem Sinne ist dies ein 2-dimensionales Array und Sie würden "123" Drucken mit:

for(unsigned i=0; table[j][i]!='\0'; ++i) //given j = 1       
{            
    cout << table[j][i]; 
} 

Ausgang:

123 
0

Wenn Sie an einem operator precedence table for C++ betrachten, werden Sie feststellen, dass Array Indizierung [] höher Vorrang vor Zeiger Dereferenzierung *. Das ist also was passiert.

table ist ein Array von Zeigern. Die Zeiger im Array zeigen auf das erste Zeichen einer Zeichenfolge. Das nächste Zeichen in der Zeichenfolge ist einfach das nächste Zeichen im Speicher. Das Ende des Strings ist das erste Zeichen, dessen Wert (als Integer) 0 ist und als Nullterminator bezeichnet wird.

Wenn Sie auf table[1] zugreifen, erhalten Sie das Element im Array bei Index 1, ein Zeiger auf ein Zeichen, das eine Zeichenfolge darstellt. Wenn Sie auf *table[1] zugreifen, erhalten Sie das Element im Array bei Index 1, einen Zeiger auf ein Zeichen, und dann den Zeiger dieses Dereferenzieren, um das Zeichen zu erhalten, auf das es zeigt.

Verwandte Themen