I'm just learning C++ and from all the example code I have looked at over the past few days I am having a hard time understanding where the pointer should be placed.
What's the difference in these 3?
1. char* x = /* ... */
2. char *y = /* ... */
3. char * z = /* ... */
Or
1. ClassX* x = /* ... */
2. ClassY *y = /* ... */
3. ClassZ * z = /* ... */
Thanks for your help.
When declaring a pointer type, place the asterisk next to the type name. Although you generally should not declare multiple variables on a single line, if you do, the asterisk has to be included with each variable.
First, declaring a pointer variable: char *ptr; This declaration tells us the pointer type (char), pointer level ( * ), and variable name ( ptr ).
If you see the * in a declaration statement, with a type in front of the *, a pointer is being declared for the first time. AFTER that, when you see the * on the pointer name, you are dereferencing the pointer to get to the target.
A pointer variable points to a data type (like int ) of the same type, and is created with the * operator.
There's no difference. They're exactly the same.
You can choose to write it however you like. Typically, C++ programmers place the asterisk next to the type, while it is more common for C programmers to place the asterisk next to the name of the variable.
The only pitfall to be aware of is when you declare multiple variables on a single line (which you really shouldn't do anyway, if not for precisely this reason). For example, in the following statement, only variable x
is declared as a pointer:
char* x, y;
Compare that with the following, which makes it much more clear which variables are pointers:
char *x, y;
As best I can tell, the third syntax emerged as a poor compromise between the two leading options. Instead of placing the asterisk next to one or the other, someone decided to place it in the middle, which is about the only place it decidedly does not belong.
no difference, but you must pay attention that if you write:
char* x, y;
only x is a pointer (the first variable declared) and you should reference them this way:
x = new (char);
*x = 'a';
y = 'b';
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With