Fehler in C Programm

  • C

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von rykoJLL.

    Fehler in C Programm

    Guten Tag Community,
    zurzeit beschätige ich mit dem Allokieren von Speicher in C.
    Ich habe folgenden C-Code:

    C-Quellcode

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. void *malloc(unsigned int length);
    4. int main(){
    5. int i;
    6. int size;
    7. int *ptr;
    8. printf("Größe eingeben:");
    9. scanf("%d", &size);
    10. ptr = (int*) malloc(size*sizeof(int));
    11. for (i =0; i <size; i++){
    12. (int*)ptr[i] = i;
    13. }
    14. for (i =0; i <size; i++){
    15. printf("array[%d] = %d",i, ptr[i]);
    16. }
    17. return 0;
    18. }


    Jetzt spuckt der Compiler einen Fehler aus:
    error: lvalue required as left operand of assignment


    Dieser Fehler kommt mir bekannt vor, wenn ich anstatt einem Vergleichsoperanten den Zuweisungsoperanten nehmen!
    Aber in diesem Falle soll dem ptr ja ein Wert zurgewiesen werden und nicht verglichen werden.
    Weiß da zufällig jemand, wie ich dem ptr den Wert richtrig zuweise, oder generell, wo mein Fehler liegt?


    Liebe Grüße
    Wo viel kopiert wird, wird wenig kapiert.
    Andreas Tenzer
    (Dt. Philosoph, * 1954)
    Hi @F4talError,
    hab mir mal deinen Code kopiert und mit CL compiled....hat mir keine Fehlermeldung angezeigt.
    Wechen Kompiler verwendest du?

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

    F4talError schrieb:

    einen Fehler
    in welcher Code-Zeile?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das Problem liegt in folgender Zeile ​(int*)ptr[i] = i;
    Du versucht einen Dereferenzierten Pointer in einen int Pointer zu konvertieren und weist ihm dann eine Zahl zu.
    Richtig ist es mit

    C-Quellcode

    1. ​ ptr[i] = i;