'why C++ recognizes an uninitialized raw-pointer as true?

Why the following code produces a seg-fault

//somewhere in main
    ...
    int *pointer;
    if(pointer)
        cout << *pointer;
    ...

But slightly changed following code doesn't

//somewhere in main
    ...
    int *pointer = nullptr;
    if(pointer)
        cout << *pointer;
    ...

the question is what in C++ makes an uninitialized pointer true - and leads to a crash



Solution 1:[1]

Because your unitialized Pointer gets implicitly converted to a boolean. Where 0 converts to false and every other value to true.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 DoItWithFlow