我来自Java背景,我开始阅读K& R,但进展非常缓慢,因为我知道大部分内容,但仍然需要再次阅读。所以,我想我可以在这里问一些关于C编程语言的东西,以便更快地学习 lot 。
我想知道的是
当我将带有&
- 前缀的struct变量作为参数传递给函数时会发生什么?我想要了解的代码示例是:
struct somestruct st;
somefunction(&st);
1.1。 somefunction
需要具有什么样的签名以及究竟通过了什么?
1.2。指向struct变量的指针将改为*st
,对吧?
当函数作为参数sometype ** variable_name
时有什么意义?我想要理解的代码是:
int main(int argc, char **argv)
我想了解的整个代码在这里:https://stackoverflow.com/a/35355069/3668527
请不要解释代码。我知道它的作用。我只需要知道那些奇怪的新C运算符&
和**
是什么意思。
编辑:哦,请告诉我如何调用这些操作符!
答案 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
时有什么意思
这意味着该参数是指向另一个指针的指针。