Search code examples
cpointerssyntaxvariable-declaration

What is the difference between int* ptr and int *ptr in C?


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?


Solution

  • 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;