I am fairly new at C and I don't know the difference between the following two variable declarations:
int* ptr;
int *ptr;
I think that in the declaration int* ptr;
, ptr
's value cannot be changed whereas it can be changed for the declaration, int *ptr;
I am not sure if that is it though.
What is the concept behind the two declarations?
To the compiler, there is no difference between the two declarations.
To the human reader, the former may imply that the "int*" type applies to all declarations in the same statement. However, the * binds only to the following identifier.
For example, both of the following statements declare only one pointer.
int* ptr, foo, bar;
int *ptr, foo, bar;
This statement declares multiple pointers, which prevents using the "int*" spacing.
int *ptr1, *ptr2, *ptr3;