CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Différences entre C et C++

tauruxbis
tauruxbis
Niveau 10
04 juillet 2008 à 09:06:48

Je vous vois venir : " :rechercher: " :) , mais je crée un topic car c'est bien plus simple que vous répondiez à mes demandes précises que je fasse une recherche éparse qui ne m'apportera que la moitié des réponses.

D'abord, le contexte : J'ai relu récemment "C++ pour les nuls" qui présente assez bien les bases de ce langage, et j'ai ensuite enchaîné sur sur "Le livre du C : premier langage" (de Delannoy).

Les deux ouvrages ne présentant que les bases des langages, il y a quelques points sur lesquels je voudrais savoir ce qu'il en est entre C et C++ :

- Peut-on utiliser des fonctions typique du C (scanf , printf...) en C++ ?

- Notamment, peut-on utiliser "goto" en C++ ?

- Peut-on initialiser tous les éléments d'un tableau en C, de la même manière qu'on le fait en C++, ex :
int tableau[10] = {0};

- Peut-on se servir du heap en C ?

- Peut-on surcharger les fonctions en C ? ex :
void fonction(int) et void fonction(float) sont deux fonctions différentes en C++

- Peut-on passer les variables "par référence" en C ? par ex :
int fonc(int &x) { x=5; } int a; fonc(a);

- J'ai été surpris de voir que les classes existaient en C (en fait au début je croyais que c'était la particularité du C++), aussi j'aimerais savoir si ce qui suit marche :

    • Fonctions membre d'une structure en C
    • Public/Protected dans une structure en C
    • Les listes chaînes marchent-elle (je suppose que oui) ?
    • Les membres statics dans une structure en C
    • L'héritage dans les structures en C
    • Si héritage, polymorphisme ?
    • Constructeurs (et de copies) et destructeurs en C ?

- Enfin, peut-on faire des modèles de fonctions et de structure en C ? (avec template <class X>) ?

Egalement s'il y a des différences majeurs que vous voudriez me signaler entre C et C++, je suis preneur :) !

Lapintade
Lapintade
Niveau 30
04 juillet 2008 à 09:38:16

- Peut-on utiliser des fonctions typique du C (scanf , printf...) en C++ ?

Le C++ est une extension du C, donc tout ce qui est possible en C, est possible en C++ (en gros).

- Notamment, peut-on utiliser "goto" en C++ ?

Oui, mais je te conseil de jamais l'utiliser, ca donne jamais de bons algorithmes.

- Peut-on initialiser tous les éléments d'un tableau en C,
de la même manière qu'on le fait en C++, ex :
int tableau[10] = {0};

Ce que tu écrit ne permet d'initialiser uniquement que le premier element. Il faudrait ecrire { 0,0,0,0,0,0,0,0,0,0 } pour initialiser tous les elements.
En C ca marche peut etre aussi.

- Peut-on se servir du heap en C ?

Le "heap" c'est le "tas" qui est la memoire dont tu dispose pour travailler. En C++ tu fait des "new" en C tu fais des "malloc" pour en obtenir.

- Peut-on surcharger les fonctions en C ? ex :

Non.

- Peut-on passer les variables "par référence" en C ? par ex :

Non

- J'ai été surpris de voir que les classes existaient en C

les classes n'existent pas en C.
Tu peux faire des "struct", qui sont un container de données.
Ces "struct" ont été evoluée en C++ et on données les "class", ou tu peux ajouter des fonctions.

- Enfin, peut-on faire des modèles de fonctions et de structure en C ?

Non.

tauruxbis
tauruxbis
Niveau 10
04 juillet 2008 à 09:44:31

Merci pour ses réponses, le C++ mérite bien son "orienté objet" par rapport au C finalement :) !

tauruxbis
tauruxbis
Niveau 10
04 juillet 2008 à 09:47:03

(Bien sûr ne voyez pas une faute d'orthographe dans "merci pour Ses réponses", c'est une déclaration générale que tout le monde peut dire pour Lapintade :) )

Dernière chose (peut-être :-) ) :

on utilise "delete" pour malloc comme pour new ?

pilo1488
pilo1488
Niveau 10
04 juillet 2008 à 10:08:12

en C++ t fais
int *ptr = new int[45];
delete[] ptr;

ou
truc *ptr = new truc();
delete ptr;

en C
int *ptr = malloc(sizeof(int) * 45);
free(ptr);

Lapintade
Lapintade
Niveau 30
04 juillet 2008 à 12:14:25

Sachant qu'en interne, le new va appeler malloc.

Mais faut pas melanger les deux (new et free() ) car il peut y avoir des info legerement differente au niveau des petites structures utilisées pour stoquer les informations de l'allocation.

tauruxbis
tauruxbis
Niveau 10
04 juillet 2008 à 13:07:32

Je vois (à vrai dire, je comptais me contenter des new (puisqu'on peut mélanger C et C++), mais c'est bien aussi de connaître la version C :) ), merci !

pilo1488
pilo1488
Niveau 10
04 juillet 2008 à 13:19:39

Il a y toute fois une différence entre new et malloc, c'est que new dans le cas d'une classe ou d'une struct avec constructeur, ce dernier sera appellé.

-MasterLink-
-MasterLink-
Niveau 6
05 juillet 2008 à 12:02:54

Et comme disaient godrik et LGV sur ce topic :

https://www.jeuxvideo.com/forums/1-31-8561794-1-0-1-0-0.htm

:p)

isukthar
isukthar
Niveau 10
05 juillet 2008 à 12:23:05

Tu peux mettre des fonctions comme membre d'une structure (un pointeur de fonction plus précisément). Ca te permet de faire de la programmation objet en C.

Pour le passage par référence, tu parles d'un passage par pointeur?
Par exemple:
void initzero(int* x)
{*x=0;
}
Qui met à 0 une variable passée par référence.

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment