This question already has an answer here:
- Difference between int* p and int *p declaration 4 answers
- difference between int* i and int *i 8 answers
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;
Spaces in C are mostly insignificant. There are occasional cases where spaces are important, but these are few and far between. The two examples you posted are equivalent.
Like the others said. There is no difference. If you want to understand more complex C type declaration you could find this link userful. Reading C declarations.
It's called whitespace operator overloading, see here: http://www2.research.att.com/~bs/whitespace98.pdf
int *p;
*p
is no meaning for compiler, (int*) is a type named pointer
.
来源:https://stackoverflow.com/questions/7799561/what-is-the-difference-between-int-ptr-and-int-ptr-in-c