Kann mir bitte jemand erklären, was mit dem folgenden und vor allem warum nicht stimmt?
%Vor%BEARBEITEN
Mein Beispiel oben basierte auf einer Funktion wie dieser, die abstürzte:
%Vor% Wie mich Vaughn Cato darauf hingewiesen hat, obwohl *pp[0] = 'a';
nicht abstürzt, ist es in schlechter Verfassung. Die korrekte Form ist die Klammer
Auch als weiteres Poster wies MK darauf hin, dass die FAQ den Unterschied zwischen Arrays und Zeigern beschreibt: Ссылка
test = &array
ist falsch, weil test vom Typ char**
ist und &array
ist ein char(*)[6]
und ist ein anderer Typ als char**
Ein Array ist nicht vom selben Typ wie char*
, obwohl C implizit zwischen einem Array-Typ und einem char*
in einigen Kontexten konvertiert wird, aber dies ist keiner von ihnen. Grundsätzlich ist die Erwartung, dass char*
gleich dem Typ eines Arrays ist (zB: char[6]
), falsch und daher ist die Erwartung, dass die Adresse eines Arrays zu einem char**
führt, ebenfalls falsch.
Dies wäre der Weg, um das zu tun, was Sie zu tun scheinen:
%Vor%test ist ein Zeiger auf ein Array, und ein Array unterscheidet sich von einem Zeiger, obwohl C es in meinen Fällen leicht macht, einen wie den anderen zu verwenden.
Wenn Sie vermeiden möchten, ein Array bestimmter Größe anzugeben, können Sie einen anderen Ansatz verwenden:
%Vor%Tags und Links c