Si vous ne voulez pas passer comme argument, vous aurez besoin de le fourrer dans un monde de sorte que la fonction peut accéder à cette façon. Je ne connais aucun autre moyen (autres que des choses stupides comme l'écrire dans un fichier main()
et de la lecture dans la fonction):
static char *x;
static void fn(void) {
char *y = x;
}
int main (int argc, char *argv[]) {
x = argv[1];
fn();
return 0;
}
Ce n'est pas comment je le ferais. Puisque vous devez être en mesure de changer fn()
pour obtenir l'accès à x
de toute façon, je réécris pour passer le paramètre:
static void fn(char *x) {
char *y = x;
}
int main (int argc, char *argv[]) {
fn(argv[1]);
return 0;
}
À moins, bien sûr, c'est des devoirs, ou un casse-tête, ou une question d'entrevue .
j'ai vu cette question avant et a aussi demandé alors: pourquoi ne changez-vous pas la fonction pour passer le paramètre? – paxdiablo
Je suis d'accord avec Pax - pourquoi voudriez-vous jamais faire ce que vous demandez? Plus de détails sur ce dont vous avez exactement besoin (pensez-en) seraient très appréciés. –
Les réponses ci-dessous fonctionnent, et sont essentiellement ce que vous suggérez. Mais notez que vous ne pouvez pas le faire const, car la valeur n'est pas connue au moment de la compilation. – UncleO