А если еще одна звездочка, то значит мы в космосе
Или это указатель на указатель…
А это и есть космос.
Кстати, кусок реальной программы (нормально работающей):
Serial.println(pp****p****p****p****p);
Это
Serial.println(pp*(***p)*(***p)*(***p)*(***p));
?
Вот за что люблю расстановку пробелов вокруг бинарных операторов - что код выглядел бы вменяемее.
Еще одна забавная особенность Си - наличие двух операторов доступа к полям структур - operator. и operator-> - тоже тесно связана с указателями и скорее всего выросла тоже из того, что в языке Би не было способа отличить указатель от слова никак кроме как применением нужного по смыслу оператора. В типизированном Си можно было бы из типа вывести что . обращается к полю структуры по указателю и сделать синтаксис доступа однообразным. Но скорее всего → это торчащие уши Би.
это не неудобно
Это да …
Serial.println(n --> 0);
Зато красиво!)
а неученых тьма"
С точки зрения синтаксиса нет разницы, писать звездочки справа, слева или посередине. Но с точки зрения смысла - разница есть.
Правильнее писать звездочки справа, и это очень просто понять на примере.
Если вы пишете звездочку слева, можно подумать, что она часть обозначения типа
int* a;
а это неверно.
Если бы звездочка относилась бы к int, то запись ниже обьявляла бы два указателя:
int* a, b;
на самом же деле звездочка тут относится к только переменной а.
И чтобы это было понятнее, лучше писать так:
int *a, b;
или даже так, чтобы никаких сомнений не было:
int b, *a;
товарищ @aa_dav напоминает мне перелогинившегося Архата… Помнится, настоящий Архат ненавидел ООП в микроконтроллерах, но разница только в этом…
Страсть к педагогике та же
Мож, просто переобулся человек?
не понял, какие сомнения в первом случае и почему они исчезают во втором?