& struct_name和sometype ** variable_name到底做了什么?

时间:2016-02-12 06:55:48

标签: c

我来自Java背景,我开始阅读K& R,但进展非常缓慢,因为我知道大部分内容,但仍然需要再次阅读。所以,我想我可以在这里问一些关于C编程语言的东西,以便更快地学习 lot

我想知道的是

  1. 当我将带有& - 前缀的struct变量作为参数传递给函数时会发生什么?我想要了解的代码示例是:

    struct somestruct st; 
    somefunction(&st);
    

    1.1。 somefunction需要具有什么样的签名以及究竟通过了什么?

    1.2。指向struct变量的指针将改为*st,对吧?

  2. 当函数作为参数sometype ** variable_name时有什么意义?我想要理解的代码是:

    int main(int argc, char **argv)
    
  3. 我想了解的整个代码在这里:https://stackoverflow.com/a/35355069/3668527

    请不要解释代码。我知道它的作用。我只需要知道那些奇怪的新C运算符&**是什么意思。

    编辑:哦,请告诉我如何调用这些操作符!

2 个答案:

答案 0 :(得分:2)

&获取指向该变量的指针。

函数签名应该是:void somefunction(struct somestruct *st),即它将接受指向该结构的指针。

strct *表示指向strct的指针,strct **表示指向strct等指针。

答案 1 :(得分:2)

  

当我将带有& -prefix的struct变量作为参数传递给a时会发生什么   功能?我想要了解的代码示例是:   &运算符返回对象的地址。

     

某些功能需要具有哪种签名以及确切传递了什么?

void somefunction(struct somestruct  *pointer);

你可以输入" const"在一些地方告诉编译器你不想让方法做任何改变。

  

1.2指向struct变量的指针将改为* st,对吧?

取决于上下文" * st"如果你只是想创建一个指针,那就这样使用:

somestruct  *pointer = NULL; // or init it somehow
  

编辑:哦,请告诉我这些操作符是如何调用的!谢谢!

他们被称为地址运营商。

  

当函数作为参数sometype ** variable_name

时有什么意思

这意味着该参数是指向另一个指针的指针。