Что означает, если(!root){ return; } означает в c

#c

Вопрос:

 void printCodes(struct MinHeapNode* root, string str)
{
 
    if (!root)
        return;
 
    if (root->data != '


Комментарии:

1. Как ты думаешь, что это делает?

2. В C struct здесь нет необходимости.

3. Это сокращенное root == 0 название . Поскольку root является указателем, а константа нулевого указателя-это константа, которая сравнивается равной нулю, это также сокращение для root == NULL или (введено C 11 и считается предпочтительным) root == nullptr .

4. Это предварительное условие. Если корень есть nullptr , функция просто вернется и ничего не сделает.

5. @Raildex Также называется "условием охраны" или "оговоркой охраны". Не уверен, что в C для этого есть льготный термин.

Ответ №1:

если(корень) эквивалентен if(root != nullptr) , так if(!root) представляйте if(root==nullptr) .

[!!= -> ==]

  A precondition for almost every recursive function.
 

Поэтому, когда вы получаете обратно nullptr корень, это означает, что функция дошла до конца данного дерева.

)
cout << root->data << ": " << str << "n";

printCodes(root->left, str "0");
printCodes(root->right, str "1");
}

Комментарии:

1. Как ты думаешь, что это делает?

2. В C struct здесь нет необходимости.

3. Это сокращенное root == 0 название . Поскольку root является указателем, а константа нулевого указателя-это константа, которая сравнивается равной нулю, это также сокращение для root == NULL или (введено C 11 и считается предпочтительным) root == nullptr .

4. Это предварительное условие. Если корень есть nullptr , функция просто вернется и ничего не сделает.

5. @Raildex Также называется «условием охраны» или «оговоркой охраны». Не уверен, что в C для этого есть льготный термин.

Ответ №1:

если(корень) эквивалентен if(root != nullptr) , так if(!root) представляйте if(root==nullptr) .

[!!= -> ==]


Поэтому, когда вы получаете обратно nullptr корень, это означает, что функция дошла до конца данного дерева.