Ich will es mal so formulieren:
- C ist einfach zu erlernen
- C ist schwierig anzuwenden
C ist eine sehr minimalistische Sprache, sprich geringer Sprachumfang, deswegen einfach zu erlernen.
Weil C so minimalistisch ist, muss man ständig das Rad neu erfinden, was nicht nur zeitaufwändig ist, sondern auch schwierig zu debuggen ist, insbesondere was Speichermanagement angeht, da ein zufälliger (uninitialisierter) Wert auf den ersten Blick kaum von einer gültigen Speicheradresse zu unterscheiden ist.
Die Grundlagen von Speichermanagement (*/free/malloc) sind auf einer Seite erklärt, nur das Anwenden....
Und: Überall wo ein C++ Compiler verfügbar ist, sollte man dies gegenüber C bevorzugen - weil einem doch einiges abgenommen wird. Man muss nicht jeden Scheiß selber programmieren, weswegen trotz deutlich größerem Sprachumfang, im Einsatz C++ wieder einfacher macht als C - obwohl es ja eine Obermenge (*) ist. Auch wenn man von Templates gehört haben muss, std::vector/.. ist dann eben doch eine Nummer einfacher als da selber was zusammenzufrickeln. Oder auch Strings, ganz hässlich unter C. Was über Laufzeiten Algorithmen sollte man sich lieber aus einem Algobuch (**) holen und nicht durch den Zwang diese zu implementieren, obwohl man keine Ahnung davon hat. Davon abgesehen sind verkettete Listen in C++ schöner dank Templates... Insbesondere ist die Wahl eine einfache, weil in C++ das Motto ist: Alles kann, nichts muss. Man kann in C++ eben auch C programmieren, wenn einem danach ist.
Und C++ kann sein Gesicht äußerst wandeln, wenn man die passenden Bibliotheken verwendet. Bsp. Qt, wer das Fenster löscht, der löscht auch die darin enthaltenen Widgets (Textfelder, etc.), weil das ganze Baumartig aufgebaut ist. Da braucht einen Speichermanagement auch nicht zu interessieren. Oder Bsp. OpenCV: Man kann die Matrizen/Bilder einfach immer per Value kopieren, da cv::Mat im Prinzip ein großer Smartpointer ist und die eigentliche Matrix nicht kopiert wird. Rumhantieren mit Pointern überflüssig.
Ist das ein Plädoyer für C++? Nein. Sprachen wählt man anhand der Anwendung aus. Wer eine GUI Anwendung schreibt die hauptsächlich in der Event-Schleife rumhängt und nichts tut und somit Effizienz egal ist, der wird sich mit C++ vermutlich kein gefallen tun. Beim Erlernen ist die Wahl der Sprache unerheblich, solange der gewählten Sprache nicht grundlegende Konzepte fehlen (bspw. OOP bei C).
Achja, was Tutorials angeht: C++ Bücher sind nicht umsonst kaum unter 500 Seiten Umfang, eher 1000 Seiten, zu bekommen. Tutorials sind ganz nett um zu sehen, ob's einem gefällt. Der Weg an einem vernünftigen Buch lässt sich aber kaum umgehen - wenn man's ernst meint.
(*) Abgesehen von ein paar minimalen Unterschieden, die wenig relevant sind, wenn man nicht gerade ein ganz fürchterlichen K&R C Stil pflegt...
(**) Danach sollte man aber einen Praktiker fragen. So glaubt der Theoretiker doch tatsächlich, bspw. weil verkettete Listen und Vektoren beide beim linearen Zugriff die gleiche theoretische Laufzeit haben, das beide in etwa gleich schnell wären - ein absoluter Trugschluss. Selbst wenn Vektoren unterlegen scheinen in der Theorie - unter Umständen sind sie trotzdem schneller (bspw. einfügen an beliebiger(zufälliger) Stelle).