Warum strcpy Funktion nicht ist Arbeiten mit Pointer to Array?
Diese Erklärung
char *a[10];
erklären keinen Zeiger auf ein Array. Es ist eine Deklaration eines Arrays von 10 Zeigern auf Objekte vom Typ char.
Außerdem ist dieses Array nicht initialisiert und seine Elemente haben unbestimmte Werte.
Um einen Zeiger auf ein Array vom Typ deklarieren char[10]
Sie durch eine Adresse einer entsprechenden Anordnung
char (*a)[10];
Und der Zeiger muss initialisiert werden, wenn Sie vorhaben, es zu benutzen in der Funktion strcpy
schreiben soll.
Es scheint, was Sie meinen, ist das Folgende.
#include <stdio.h>
#include <string.h>
int main(void)
{
char s[10];
char (*a)[10] = &s;
strcpy(*a, "foo");
puts(s);
return 0;
}
der Programmausgabe ist
foo
In diesem Programm gibt es in der Tat einen Zeiger auf ein Zeichen-Array des
char (*a)[10] = &s;
char[10]
Typ deklariert ist
und der Zeiger durch die Adresse initialisiert wird, des Arrays s
.
Und der dereferenzierten Zeiger wird in der Funktion verwendet strcpy
strcpy(*a, "foo");
Wenn der Code-Speicher zuweisen für Ihren Zeiger ist 'a'? –
Ruft dein Kompilieren nicht während des Kompilierens dieses Codes auf? Du solltest es hören. – Gerhardh