What is the difference between char array and char pointer in C?

char* and char[] are different types, but it’s not immediately apparent in all cases. This is because arrays decay into pointers, meaning that if an expression of type char[] is provided where one of type char* is expected, the compiler automatically converts the array into a pointer to its first element. Your example function printSomething … Read more

Return array in a function

In this case, your array variable arr can actually also be treated as a pointer to the beginning of your array’s block in memory, by an implicit conversion. This syntax that you’re using: int fillarr(int arr[]) Is kind of just syntactic sugar. You could really replace it with this and it would still work: int … Read more

Pointer to class data member “::*”

It’s a “pointer to member” – the following code illustrates its use: #include <iostream> using namespace std; class Car { public: int speed; }; int main() { int Car::*pSpeed = &Car::speed; Car c1; c1.speed = 1; // direct access cout << “speed is ” << c1.speed << endl; c1.*pSpeed = 2; // access via pointer … Read more

NULL vs nullptr (Why was it replaced?) [duplicate]

nullptr has type std::nullptr_t. It’s implicitly convertible to any pointer type. Thus, it’ll match std::nullptr_t or pointer types in overload resolution, but not other types such as int. 0 (aka. C’s NULL bridged over into C++) could cause ambiguity in overloaded function resolution, among other things: f(int); f(foo *); (Thanks to Caleth pointing this out … Read more

What is uintptr_t data type

First thing, at the time the question was asked, uintptr_t was not in C++. It’s in C99, in <stdint.h>, as an optional type. Many C++03 compilers do provide that file. It’s also in C++11, in <cstdint>, where again it is optional, and which refers to C99 for the definition. In C99, it is defined as … Read more

Differences between unique_ptr and shared_ptr [duplicate]

Both of these classes are smart pointers, which means that they automatically (in most cases) will deallocate the object that they point at when that object can no longer be referenced. The difference between the two is how many different pointers of each type can refer to a resource. When using unique_ptr, there can be … Read more