Search code examples
cpointersmalloc

Is the line (*x=y) equal to the line (x[0]=y) in C


I am confused about C syntax. If I allocate memory:

int* x = (int*)malloc(1 * sizeof(int));

Are these two code snippets of an int pointer equal?

*x = 0;

And

x[0] = 0;

Solution

  • The definition of the [] operator is: given ex1[ex2], it is guaranteed to be equivalent to

    *((ex1) + (ex2))
    

    Where ex1 and ex2 are expressions.

    In your case x[0] == *(x + 0) == *(x) == *x.

    See Do pointers support "array style indexing"? for details.