匿名结构指针

时间:2013-05-31 16:18:49

标签: c

假设我们有一段代码:

int random_function random_variable                                   
  (                                                                 
   struct   struct_name *               
  );  

这是有效的语法吗?如果是这样,以后如何在程序中引用指针?

1 个答案:

答案 0 :(得分:3)

不,示例代码的语法无效。编译尝试将显示。

重写到你要问的是下面的例子,你问“如何在程序中稍后引用(匿名结构)指针?”

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

看来你正在混合什么是匿名。您的示例提示您认为结构具有名称,而变量是匿名,如果可能发生,则会使其无法访问。

匿名结构指针的正确示例是

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成为匿名结构的指针。该变量以通常的方式访问。