2010-10-26 12 views
0

Donc, quand je passe une const char * à une fonction une fois, puis-je l'utiliser à nouveau? Il semble finir par me cracher des conneries.Question sur la réutilisation des pointeurs après passage aux fonctions

const char *config_file = "file.txt"; 

function(int x, config_file); 
cout << "Number" << x; 


secondfunction(int y, config_file); 

Ai-je besoin de créer un autre pointeur vers config_file?

Si c'est le cas, comment faire?

Merci!

+9

Il en est ainsi loin d'un code bien structuré, qu'il est très difficile de déterminer (1) ce qu'il est censé faire et/ou (2) ce qu'il fait. Un programme minimal qui démontre le problème (ressemble à 12 lignes pourraient faire) et une explication de ce qu'il était censé faire aiderait beaucoup. –

+1

Ceci est très confus, je ne vois pas où config_file est utilisé, donc il n'y a aucun moyen de répondre à votre question. –

+2

+1 Il est trop rare de voir des questions avec un titre descriptif et précis. –

Répondre

10

Non, vous pouvez l'utiliser très bien. Malgré le fait que le code que vous avez donné est incompilable, je pense que je comprends ce que vous demandez.

Un segment de code comme:

const char *x = "Hello"; 
fnA (x); 
fnB (x); 

devrait être très bien.

Si vous trouvez que fnB ne reçoit pas ce qu'elle attend alors:

  • fnA est en train de changer ce que x points (normalement pas possible car il est un const char *); ou
  • un morceau de code non affiché change le pointeur lui-même; ou
  • quelque chose est en train de corrompre la mémoire.

Essayez ce code comme exemple:

#include <iostream> 
#include <iomanip> 

static void fnA (const char *a) { 
    std::cout << "fnA: [" << a << "]" << std::endl; 
} 
static void fnB (const char *b) { 
    std::cout << "fnB: [" << b << "]" << std::endl; 
} 
int main (void) { 
    const char *x = "Hello"; 
    fnA (x); 
    fnB (x); 
    return 0; 
} 

Il émet, comme prévu:

fnA: [Hello] 
fnB: [Hello] 
+4

+1 Pour la lecture de l'esprit. – karlphillip

Questions connexes