L’appellation C/C++ est malheureuse.
Sinon, ce tuto de 2005 ne fait qu'effleurer le côté C++ des pointeurs. Sans parler des dernières directions prises avec les CppCoreGuidelines, et le C++17 en préparation, qui poussent vers l'emploi de types tels que span/string_view/... pour faire circuler des tableaux à la C (pointeur + taille), il eut-été intéressant de noter que le C++ permet d'avoir des fonctions qui n'acceptent que des tableaux (statiques) et qui refusent des pointeurs. C'est d'ailleurs un des angles d'attaque de Dan Saks lorsqu'il veut vanter les avantages du C++.
i.e. la fonction suivante accepte uniquement des tableaux de 10 éléments exactement, et pas des pointeurs. Si on veut pouvoir reconnaitre la taille automatiquement, il faut passer par des templates.
Après, on ne préfère pas vraiment utiliser new et delete en C++, on préfère les cacher derrière des capsules RAII -- pour ne jamais appeler delete/free/fclose/unlock/... (ailleurs que dans des destructeurs) -- comme std::vector<>, std::auto_ptr<>, boost::scoped_ptr<>, boost::shared_ptr<> à l'époque du tuto, std::array, std::unique_ptr<> et std::shared_ptr<> aujourd'hui. Voire aussi gsl::owner<> et gsl::not_null<> si on veut suivre les recommandations des CppCoreGuidelines. En C++14, on va pouvoir pousser le vice jusqu'à s'interdire toute utilisation explicite de new grâce à std::make_unique() -- oui, oui il y a bien un intérêt en termes de robustesse des programmes produits.
PS: pour afficher la valeur d'un pointeur en C, on est censés caster le pointeur en void*:
http://www.developpez.net/forums/d47...s/#post2832109 -> printf ("%p", (void*)&x);
3 |
0 |