Bonjour,
je sais que ce n'est pas terrible d'utiliser les char*, qu'il vaudrait mieux utiliser les string, mais j'utilise une librairie de fonctions qui utilise les char*.
J'essaie donc de copier un const char** dans un tableau de char**. Mon code est le suivant, il fonctionne. Je pensais être obligé de rajouter le code en commentaires pour préciser la taille de chaque char* de mon tableau de char*. Or, non seulement ça n'est pas nécessaire, mais ça ne marche pas quand je décommente ces lignes.
Quelqu'un peut il m'expliquer pourquoi ? Mon code est il correct ?
Question subsidiaire : que se passe-t-il en mémoire ? Les chaînes de caractères sont elles recopiées, ou mon tab_copie ne fait il que pointer sur les éléments de mon tableau initial (si c'est le cas, est ce problématique, puisque mon tableau d'origine est constant?) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 #include <iostream> using namespace std; main() { const char* tab[]={ "baba", "bibi", "bobo" }; char ** copie_tab; int size_tab; size_tab=sizeof(tab)/sizeof(char*); cout << "taille de tab : " << size_tab << endl; copie_tab=new char*[size_tab]; for (int i=0;i<size_tab;i++) { // copie_tab[i]=new char[sizeof(tab[i])/sizeof(char)]; copie_tab[i]=const_cast<char *> (tab[i]); } for (int i=0;i<size_tab;i++) cout << tab[i] << " et " << copie_tab[i] << endl; //for (int i=0;i<size_tab;i++) // delete [] copie_tab[i]; delete [] copie_tab; }
Merci d'avance
Partager