-6

次のコードがあるとします。

int random_function random_variable                                   
  (                                                                 
   struct   struct_name *               
  );  

これは有効な構文でしょうか? もしそうなら、プログラムの後半でポインタをどのように参照しますか?

4

1 に答える 1

3

いいえ、サンプル コードは有効な構文ではありません。コンパイルの試みはそれを示します。

あなたが求めているように見えるものに書き直すと、次の例になります。「プログラムの後半で (匿名構造体) ポインターをどのように参照しますか?」

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

匿名のものを混ぜているようです。あなたの例は、構造に名前があり、変数がanonymousであると考えていることを示唆しています。これが発生すると、アクセスできなくなります。

Anonymous Struct Pointer の正しい例は次のようになります。

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

ここでは、構造体にタグがないため、匿名構造体になっていることがわかります。 variable_name無名構造体へのポインタになります。変数は通常の方法でアクセスされます。

于 2013-06-01T23:40:58.497 に答える