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 ?

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;
 
}
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?) ?

Merci d'avance