【发布时间】:2019-09-08 01:38:42
【问题描述】:
可能这类问题已经被问过很多次了,我还阅读了一些关于 C++ 中的指针和引用的博客。我对 C++ 的经验有限。但是,我正在浏览 Arduino 的 PID 库中的以下代码,但我无法理解在对象实例化期间使用了 "&" ,这在我看来就像通过引用传递。但是为什么 Class 使用 "*" 呢?
**************** Class instantiation ******************
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);
**************** Code for class definition ******************
PID(double*, double*, double*, Input, Output,double, double, double, int, int);
【问题讨论】:
-
理解许多符号在 c++ 中可能意味着不同的东西,这取决于它们的使用位置,这一点很重要。这里,
&是地址运算符并产生一个指向操作数的指针。它与引用无关,只是引用碰巧使用了相同的符号。 -
听起来你可以使用good C++ book 这将真正帮助你理解指针和引用语法。
-
&variable获得它的指针。type*声明一个指向type的指针。type&声明对type的引用。*pointer获取它指向的变量的值。 -
所以 &Input 在这种情况下是一个指针, * 给出存储在输入位置的值?我理解正确吗? @NathanOliver 谢谢你的书。
标签: c++ pointers arduino pass-by-reference