- Mitglied seit
- 28.09.2001
- Beiträge
- 2.268
- Reaktionen
- 0
Hi, ich hab da ma ne Frage:
int main(int argc, char *argv[])
{
argv += 1;
}
kompiliert ohne Fehler.
int main()
{
char *s[] = {"Eins", "Zwei", "Drei"};
s += 1;
}
kompiliert nicht. Warum??? Bzw eher warum kompiliert das erste?
Ich hab in meinem C Buch gelesen:
Das würde erklären, warum das zweite Programm nicht kompiliert, man kann array-Variablen (die ja Adressen sind, nur im Gegensatz zu pointern keinen Speicherplatz haben), nicht einfach woanders hinzeigen lassen. Aber warum bitte geht es dann beim ersten Programm?
char *argv[] und char *s[] sind doch beide arrays von pointern auf chars.
Wieso kann ich jetzt bei dem einen was dazuaddieren, beim anderen nicht? WTF?
Hat hier der Array für die Kommandozeilenparameter einen Sonderstatus? In dem Buch wird der einfach manipuliert, ohne Erklärung warum das bei dem jetzt plötzlich geht.
int main(int argc, char *argv[])
{
argv += 1;
}
kompiliert ohne Fehler.
int main()
{
char *s[] = {"Eins", "Zwei", "Drei"};
s += 1;
}
kompiliert nicht. Warum??? Bzw eher warum kompiliert das erste?
Ich hab in meinem C Buch gelesen:
"The computer will allocate space to store the array, but it won't allocate any memory to store the array variable. The compiler simply plugs in the address of the start of the array."
char *argv[] und char *s[] sind doch beide arrays von pointern auf chars.
Wieso kann ich jetzt bei dem einen was dazuaddieren, beim anderen nicht? WTF?
Hat hier der Array für die Kommandozeilenparameter einen Sonderstatus? In dem Buch wird der einfach manipuliert, ohne Erklärung warum das bei dem jetzt plötzlich geht.