я хотел бы понять использование обоих? то, что я понимаю, сейчас это Node *root
является ссылкой на корень указатель на объект узла с другой стороны Node* root
является указателем на узел сам (позволяют передавать по ссылке)разница между Node * root и Node * root
ответ
Расстояние не имеет значения в этом определении, вы можете написать все следующие взаимозаменяемые, все они определяют root
как указатель на Node
:
Node*root;
Node *root;
Node* root;
Node * root;
Node *root; // I have seen that!
Node
*
root
;
Node(((*(root)))); // yes, this is allowed too!
\
N\
od\
e*r\
oot ; // ASCII art style: a corner case ;-)
Это вопрос стиля, который вы предпочитаете использовать. Просто имейте в виду эти соображения:
Читаемость очень важно избегать глупых и тончайших ошибок и сделать код легче поддерживать, будь то от себя или других.
Консистенция является ключом к считыванию кода: выберите один стиль и используйте его везде.
Node * root
выглядит как умножение, оно имеет тенденцию создавать путаницу.Лавировать к
*
до конца типа создает путаницу, если объявить несколько переменных в одном операторе:Node* root, tree; // defines a pointer root and a structure tree.
, тогда как
Node *root, *tree; // defines 2 Node pointers root and tree.
Это является причиной того, многие программисты предпочитают лавировать
*
к идентификатору в объявлениях.Использование
typedef
для скрыть указатель природы сtypedef Node *Nodeptr;
или хужеtypedef Node *List;
стремится быть подверженными ошибкам и создать еще больше путаницы в обеих Программистах и разум читателя.
node *foo
и node* foo
идентичны компилятором.
!! Fun !! мелочи, которые вы, возможно, не знаете. Когда вы пишете, что выглядит как объявление нескольких указателей:
int* a, b; // two int*, right?
Что видит компилятор объявления для указателя Int и междунар:
int *a;
int b;
Чтобы объявить несколько указателей в одном операторе вы должны дать каждая из которых является *
:
int *a, *b;
или
int* a, * b;
- 1. CKEditor force root node
- 2. TreeView Root Node Selected
- 3. Какова разница между "struct node * temp" и "struct node * & temp"?
- 4. Xml De-Serialization No Root Node
- 5. Ada 2012 Multiway Tree, Create Root Node
- 6. XML Parsing Root Node с JavaScript
- 7. В чем разница между // node и/descendant :: node в xpath?
- 8. В чем разница между «const Node & n» и «Node & n»?
- 9. В чем разница между $ root и $ parent?
- 10. Разница между $ rootScope и $ rootScope. $ Root
- 11. Разница между IoT Foundation и Node-RED?
- 12. Разница между объектом Node и объектом Element?
- 13. Разница между «./ [filename]» и «node [filename]»
- 14. В чем разница между «node-debug index.js» и «run node-inspector, then node --debug index.js»
- 15. Добавить префикс в XML Root Node - реализация предложения Скотта Гензельмана?
- 16. D3 force layout fix root node в центре
- 17. НПМ и Node команды разбиты
- 18. В чем разница между пользователем root и jenkins?
- 19. какая разница между пользователем системы android и пользователем linux root
- 20. В чем разница между CSS3: root pseudo class и html?
- 21. В чем разница между pwd и root в struct task_struct?
- 22. Разница между регистратором и уровнем root в log4Net?
- 23. Есть ли разница между <node xsi: nil = "true" /> и <node xsi: nil = "true"></node>?
- 24. В чем разница между узлом узла struct node и узлом struct node *?
- 25. Ошибка времени компиляции: невозможно преобразовать 'node * (int)' в 'node *'
- 26. node-postgres разница между done() и done (client)
- 27. В чем разница между $ node и $ content в drupal?
- 28. Какая разница между использованием «slc run» StrongLoop и «node app.js»
- 29. Есть ли разница между узлом * next и node * next?
- 30. В чем разница между деревом n-node и двоичным деревом?
Предполагая, что это C, то они одинаковы. –
Нет такой вещи, как «ref» в C. –
Они оба одинаковы, и что они означают, это то, что root является указателем, который является указателем на тип узла.Это означает, что теперь root сможет хранить адрес переменной, тип данных которой также является Узлом. Когда мы говорим, что переменная является указателем, например, в вашем примере, это означает, что указатель, который вы указали, сможет хранить адрес памяти других переменных, которые относятся к типу, с которым был объявлен этот указатель. То, что указывает, означает (для хранения адресов других переменных или мест памяти). –