2013-05-31 2 views
-5

Supposons que nous avons un morceau de code:Anonyme Struct pointeur

int random_function random_variable         
    (                 
    struct struct_name *    
); 

Serait-ce une syntaxe valide? Si oui, comment fait-on référence au pointeur plus tard dans le programme?

Répondre

2

Non, l'exemple de code n'est pas une syntaxe valide. Une tentative de compilation montrera cela.

Réécrire dans ce que vous semblez demander est l'exemple suivant, vous demandez "comment fait-on référence au pointeur (struct anonyme) plus tard dans le programme?"

int random_function(int random_variable) { 
    // Supposed Anonymous Struct Pointer, but invalid syntax. 
    struct struct_name *; 
} 

Il semble que vous mélangez ce qui est anonyme. Votre exemple suggère que vous pensez que la structure a un nom et que la variable est anonyme, ce qui, si cela pouvait arriver, la rendrait inaccessible.

Un exemple correct de Anonymous Struct pointeur serait

int random_function(int random_variable) { 
    struct /* no structure tag here */ { 
    int a; 
    int b; 
    } *variable_name; 
variable_name = malloc(sizeof(variable_name)); 
variable_name->a = 1; 
variable_name->a = 2; 
return variable_name->a; 
} 

Ici vous pouvez voir la structure n'a pas d'étiquette, qui le rend une structure anonyme. variable_name devient un pointeur vers une structure anonyme. La variable est accessible de la manière habituelle.