* vs & Arduino Class - PullRequest
       12

* vs & Arduino Class

0 голосов
/ 17 апреля 2019

Вероятно, такие вопросы задавались довольно много раз, и я также читал несколько блогов об указателях и ссылках на C ++. У меня ограниченный опыт работы с C ++. Однако я просматривал следующий код из библиотеки PID Arduino и не мог понять, что при создании экземпляра объекта используется "&" , который выглядит для меня как передача по ссылке. Но почему Класс использует "*" ?

**************** 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);

1 Ответ

1 голос
/ 17 апреля 2019

В этом случае & является оператором адреса.

Список параметров конструктора ПИД содержит несколько указателей.&Input возвращает адрес Input.Что хранят указатели?Адреса!

Подробнее об адресе оператора и читайте:

https://en.cppreference.com/w/cpp/language/operator_member_access

1) & expr

...

1) Если операнд является выражением lvalue какого-либо объекта или типа функции T, оператор & создает и возвращает значение типа T * с той же квалификацией cv, которое указывает на объект или функцию, обозначенныеоперанд ....

...