I have this below code

Code:
int main()
{
	int x[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
	int *pointer = NULL;

	pointer = x[4];
	printf("%d \n", pointer);

	pointer = &x[4];
	printf("%d \n", *pointer);

	return 0;
}
So my question is what is the difference between, I kind of get confused.
Code:
pointer = x[4];
	printf("%d \n", pointer);
and
Code:
pointer = &x[4];
	printf("%d \n", *pointer);