Ich verstehe völlig was ist "int *p[3]
" (p ist ein Array von 3 Zeiger bedeutet, dass wir 3 verschiedene Zeilen mit einer beliebigen Anzahl von Ints haben können durch die Zuordnung des Speichers als unsere Größe der verschiedenen Zeilen).Was ist der Unterschied zwischen int (* p) [3] und int * p [3]?
Meine Verwirrung liegt bei "int (*p)[3]
" was bedeutet das? Ist es wie "p" speichert die Adresse von 3 zusammenhängenden Speicher von Int oder etwas anderes?
Bitte klären Sie und auch, wie man Gebrauch im Programm verwendet, um sie zu unterscheiden.
Vielen Dank im Voraus.
@revised
Entschuldigen Sie, dass Sie eine doppelte Frage gestellt haben. Ich habe meine Zweifel nicht intensiv gesucht. Aber meine Zweifel bleiben immer noch als Neuling Programmierer. Ich ging durch beide Seiten von Q/A C pointer to array/array of pointers disambiguation
und
zweite Verbindung löscht teilweise die Zweifel so meine Zweifel beseitigen bitte oben gestellte Frage in Bezug erklären zu stapeln und Heap: zum Beispiel
int *p[3]; // (1)
nehmen 12 (3 * 4bytes) Bytes des Stapels und für Heap hängt von der Laufzeit ab. Jetzt für
int (*p1)[3]; //(2)
(2) unter Verwendung von "neuen" wäre man als
p1 = new int[7][3]; // (3)
in einen der Antwort von Link int (*p) [4]? gegeben; Jetzt ist meine Frage seit "int (* p1) [3]; // (2)" ist ein Zeiger auf ein Array von 3 Ints, so wie viel Speicher von p1 zur Kompilierzeit genommen wird, wie eq (3) kann auch von
p1 = new int[n][3]; // (3) where n is an integer
so ersetzt werden, was dann?
Bitte erläutern.
http://cdecl.org/ – dyp
Mögliche dup von http: // stackoverflow.com/questions/3382951/int-p-4 – lurker