C++ Grundlagen Tutorial

แชร์
ฝัง
  • เผยแพร่เมื่อ 13 ม.ค. 2025

ความคิดเห็น • 35

  • @SaltyTee
    @SaltyTee 3 ปีที่แล้ว +12

    Der allerdings counter hat mich gekillt xD so macht lernen spaß!:)

  • @cryelectric
    @cryelectric ปีที่แล้ว +1

    3:00 nur so funktioniert es bei mir: #include
    using namespace std;
    int main()
    {
    char name[] = "Bla";
    char test[] = "Test";
    cout

  • @fatih171-z9d
    @fatih171-z9d 5 ปีที่แล้ว +11

    ALLERDINGS hätte ich das selbe Phänomen :D

  • @ligonapProduktion
    @ligonapProduktion 10 หลายเดือนก่อน +1

    Besser statt wäre . Läuft dann ohne Probleme.

  • @cryelectric
    @cryelectric ปีที่แล้ว

    strcat und strncat nicht zum laufen gebracht. auch wenn ich den char name[100!] vergrössere stürzt das programm leider
    immer ab.

  • @larsr906
    @larsr906 3 ปีที่แล้ว

    Richtig geiles Video

  • @darknesshdundewhd1086
    @darknesshdundewhd1086 2 ปีที่แล้ว +1

    Bei mir kommt, wenn ich es so schreibe wie im Video dieser Fehler:
    #include
    using namespace std;
    int main()
    {
    char name[] = "Bla";
    char *test = "Test";
    cout

    • @cedric_ort
      @cedric_ort 2 ปีที่แล้ว +1

      den Fehler bekomme ich auch normal, kann es jedoch dennoch ausführen. Das ist soweit kein Problem... ruf einfach anstatt cout

    • @pephiros9729
      @pephiros9729 2 ปีที่แล้ว +4

      Eine etwas späte Antwort, aber ich hoffe sie hilft noch:
      Mit dem besagten "const char *" ist die Zeichenkette "Test" gemeint. Denn "Test" wird als const char * interpretiert.
      Der hier deklarierte pointer *test wurde aber als char * deklariert (nicht als const char *).
      Und man kann keinen const char * einem char * zuweisen. Das widerspricht der Definition eines const datentyps *.
      Damit dieser Fehler nicht mehr erscheint müsste die Zeile folgendermaßen lauten:
      const char *test = "Test";
      Damit wird ein const char * einem const char * zugewiesen und der compiler ist happy.
      Wenn man will, dass der pointer Typ char * bleibt muss man "Test" in ein char * konvertieren. Dies geht wie folgt:
      char *test = (char*) "Test";
      Damit wird der als const char * angesehene "Test" als char * konvertiert dem pointer zugewiesen.
      Der Kern der Problematik besteht darin, dass hier versucht wurde einem konstanten Datentyp (const char *) einen variablen Datentyp (char *) zuzuweisen.
      Wir haben in Tutorial 12 gelernt, dass man die Speicheradresse sowie den Wert der Variablen auch über pointer verändern kann. Man könnte also mit dem pointer test die Zeichenfolge "Test" verändern.
      Und genau hier ist das Problem. Man könnte also dadurch eine konstante Variable verändern, denn "Test" ist konstant. Dies meinte ich mit "Das widerspricht der Definition eines const datentyps *".
      Denn const Datentypen können und dürfen nach ihrer Deklarierung/ Definierung nicht mehr verändert werden.
      Aber es gibt einige Compiler, die diese "Hintertür" anscheinend übersehen und es doch zulassen. Wobei ich mich dann frage was passiert, wenn man dann den const char * "Test" über den pointer test versucht zu verändern.
      PS:
      Anderen Datentypen kann man natürlich const variablen zuweisen.
      Wie z.B. int oder float, weil es über diese nicht möglich ist, die const variablen zu verändern.
      Z.B.
      int a = 0; //Hier ist 0 sogar bereits ein const int
      const int b = 42;
      a = b; //Dies ist legitim. a = 42. Man kann also einem int (a) ein const int (b) zuweisen. Und b kann über a nicht verändert werden. Denn:
      b = a; //Wird sofort vom compiler geblockt. Man kann b nicht einen neuen Wert zuweisen, da b als const int deklariert wurde.
      Nur ein Datentyp der Stellvertretend für b steht könnte b verändern. Und dieser Stellvertreter wäre ein pointer, wie wir in Tutorial 12 gelernt haben. Was uns jedoch wieder zum Anfang meiner Nachricht bringt, dass man ein const int * keinem int * bzw. const char * keinem char * zuweisen kann.
      Ich hoffe meine Erklärung konnte weiterhelfen :D

  • @sturmente
    @sturmente 5 ปีที่แล้ว +2

    Hallo,
    Bis jezt hatte ich nie Probleme mit deiner Tutorial reihe aber jetzt bekomme ich einen Eror wenn ich
    char name_c[ ] = "Bla";
    char *test = "Test";
    cout

    • @sturmente
      @sturmente 5 ปีที่แล้ว

      Achso und ich bekomme denn Eror: Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
      Fehler (aktiv) E0144 Ein Wert vom Typ ""const char *"" kann nicht zum Initialisieren einer Entität vom Typ ""char *"" verwendet werden.

    • @Pilzschaf
      @Pilzschaf  5 ปีที่แล้ว +2

      Der Fehler liegt daran, dass es bei mit "" itialisierten Strings um Stringkonstanten handelt (const char). Diese const Eigenschaft ignorieren wir allerdings wenn wir es in einen char umwandeln. Durch einen expliziten cast kann man den Fehler ganz einfach beheben. Einfach char* name = (const char*) "Bla"; nutzen. Alternativ kannst du die Variable aber auch zu einem const char ändern.

    • @lua9502
      @lua9502 4 ปีที่แล้ว +2

      @@sturmente ich hab das Problem gefixt, indem ich nicht
      char* test = (const char*)"Test";
      geschrieben habe, sondern:
      char* test = (char*)"Test";
      Ich hoffe ich konnte dir irgendwie helfen

    • @__Nille__
      @__Nille__ 4 ปีที่แล้ว

      @@Pilzschaf Warum musst du in deinem Video nicht casten?

  • @klinkaistwild
    @klinkaistwild 7 หลายเดือนก่อน

    strcat spuckt mir einen fehler aus :( "Debug Assertion Failes!"

  • @luh2829
    @luh2829 4 ปีที่แล้ว +2

    Sobald ich versuche irgendeinen variante dieses befehls auszuführen:
    cout

    • @Pilzschaf
      @Pilzschaf  4 ปีที่แล้ว +1

      Das Problem ist, dass in C++ der Speicher selbst gemanaged werden muss. Das kann insbesondere bei strings anfangs etwas verwirrend werden. In deinem Fall muss dein source string genug Speicher reserviert haben, damit der andere string reinpasst. Aus diesem Grund würde ich dir inbesondere am Anfang dringend dazu raten, den C++ std::string für so etwas zu verwenden. Im Endeffekt hast du zwei Möglichkeiten: Am einfachsten wäre ein cout

    • @luh2829
      @luh2829 4 ปีที่แล้ว +1

      @@Pilzschaf Danke funktioniert😁

  • @danielp6011
    @danielp6011 7 ปีที่แล้ว

    Hey, eine Frage: Ich habe als Umgebung VS in Win10 und habe das ganze mit dem strcat() leider nicht hinbekommen. Außerdem lässt sich dort eine Zeichenkette nicht wie in deinem Beispiel einem char zuordnen, ich brauche dort zwingend const char... Mache ich da etwas falsch? string.h ist drin...

    • @Pilzschaf
      @Pilzschaf  7 ปีที่แล้ว +1

      Kann ich jetzt erstmal auch nichts direkt zu sagen, vil. hat Visual Studio die C Bibliotheken nicht eingebunden oder so. Wenn du mir den genauen Fehlertext + Quellcode schicken kannst kann ich vil etwas mehr zu sagen.

    • @raphfiantv5547
      @raphfiantv5547 6 ปีที่แล้ว +1

      @@Pilzschaf ich habe den gleichen Fehler. Fehlercode 1: E0144 2: C2440

    • @raphfiantv5547
      @raphfiantv5547 6 ปีที่แล้ว +2

      Hallo,
      du musst statt dem zweiten char einfach: const char* test = "Test"; schreiben

    • @raphfiantv5547
      @raphfiantv5547 6 ปีที่แล้ว +3

      @@Pilzschaf Hab das Problem herausgefunden man muss einfach: const char* test = "Test"; schreiben

    • @Heizung5FensterKipp
      @Heizung5FensterKipp 5 ปีที่แล้ว

      @@raphfiantv5547 danke ;)

  • @Infinity_Nightmare
    @Infinity_Nightmare 4 ปีที่แล้ว

    Wie hast du dir Programmieren beigebracht und wie bist du auf das Thema gekommen?

  • @nulle5311
    @nulle5311 ปีที่แล้ว

    strncat und strcat, funktionieren in der Art wie im Video gezeigt nicht.
    #include
    #include
    using namespace std;
    int main()
    {
    char name[] = "Bla";
    const char *test = "Test";
    cout

    • @nulle5311
      @nulle5311 ปีที่แล้ว

      Noch eine kleine Anmerkung.
      #include
      #include
      using namespace std;
      int main()
      {
      char name[] = "Bla";
      const char *test = "Test";
      cout

  • @kaim.8462
    @kaim.8462 2 ปีที่แล้ว +1

    korrektes c++ ist aber nicht include sondern include
    danke für nices video

  • @ericnorbertfalbe3513
    @ericnorbertfalbe3513 4 ปีที่แล้ว

    Der cstring mit dem Wert "ich bin ein string" müsste zweimal ausgegeben werden und nicht nur einmal!