Ich brauche deine Hilfe! Warum in C-Strukturen von Daten, die in Zeichenfolgen speichert funktioniert nur 1 Art der Deklaration: char *name;
funktioniert, aber char []name;
funktioniert nicht.Char Zeichenfolge in einer Struktur C
Aber wenn zu versuchen, eine Zeichenkette innerhalb des Codes zu deklarieren (ohne Verwendung von struct), alles funktioniert. Code-Beispiel, das veranschaulicht, wann wann Char-Array zu deklarieren ist, funktionieren beide Deklarationstypen.
#include "funct.h"
#include "stdio.h"
//structure employee name and surname only works when using char* pointers
struct employee {
char *name;
char *surname;
};
int main() {
struct employee worker;
worker.name = "Robert";
worker.surname = "Woz";
printf("\n");
printf("%s", worker.name);
printf("\n");
printf("%s", worker.surname);
printf("\n");
char name[] = "Robert"; //declaration of array with using [] postfix
for (int i = 0; i < 7; i++) {
printf("%c", name[i]);
}
printf("\n");
char *surname = "Woz"; //declaration of array wit using char* pointer
for (int i = 0; i < 4; i++) {
printf("%c", surname[i]);
}
printf("\n");
return (0);
}
Programmausgabe:
Robert
Woz
Robert
Woz
C oder C++? Wähle ein. –
'char * Nachname' deklariert kein Array; es deklariert einen Zeiger. – melpomene
'char * Nachname =" Woz ";' erstellt ein String-Literal der statischen Lebensdauer und weist 'Nachname 'zu, um darauf zu zeigen. 'Char-Name [] =" Robert ";' erstellt ein Character-Array mit Gültigkeitsdauer, ein Array ist nicht dasselbe wie ein Pointer_, und so hat ein Array einige zusätzliche Informationen, dh seine Größe, wo ein Zeiger nicht weiß, wie viel Erinnerung, auf die es zeigt. – George