2012-12-12 4 views
0

Y a-t-il un problème de transmission d'une variable statique à une fonction en tant que paramètre? Le programme a imprimé 1 0. Donc, les variables statiques sont-elles également passées par valeur comme d'habitude?Transmettre des variables statiques en tant qu'arguments à une fonction

#include<stdio.h> 
int main() 
{ 
    static main; 
    int x; 
    x=call(main); 
    printf("%d %d",x,main); 
} 
int call(int address) 
{ 
    address++; 
    return address; 
} 
+4

Notez que C utilise l'appel par valeur pour * tout *. Changer l'argument en appel ne fera rien. – fuz

Répondre

1

Oui, les variables statiques sont transmises comme n'importe quelle autre variable.

Mais je m'attendrais à ce que vous ayez quelques erreurs de compilation lorsque vous nommez votre variable avec le même nom que la fonction.

+1

Je n'aime pas ce libellé. Les variables ne sont pas passées plus qu'une expression est passée. –

+0

C'était la question. Si seulement la valeur de la variable est poussée sur la pile et la fonction obtient une copie ne semble pas utile ici. –

+0

Et "les variables statiques sont passées comme n'importe quelle autre variable" est encore grossièrement libellé sans raffinement ou clarification. –

0

Il n'y a pas de différence de passage de variable avec la statique.

Notez que vous devez inclure le type dans votre code: static int main;

Et je ne nommer que variable main parce que cela pourrait être un mot-clé réservé.

+1

'main' n'est pas un identifiant réservé et vous pouvez l'utiliser pour déclarer des variables. – ouah

Questions connexes