Hmm... sounds like you had a less than stellar teacher. While I do not claim to be a great instructor, I will attempt to elucidate the * operator a little bit:
First, a word about pointers:
A pointer is the memory address of something. So, suppose that we are keeping track of how many cups of hot chocolate you have had:
int myCupsDrunk;
Well, that has got to go in RAM somewhere, right? (I am ignoring register variables here for simplicity)
So, being somewhere in RAM, it's got to have an address in RAM - lets say it winds up at 12000. So, every time you tell the processor to go fetch the contents of location 12000, it will get the number of cups you have drunk; and vice-versa for storing something in 12000.
Well, what if we have a variable that stores, not cups drunk, but addresses? That variable is what we call a pointer: because it points to something else, but isn't the thing itself.
So, in C, how do we make a pointer variable? By prepending the * operator on it, when we are declaring it:
int *somebodysCups;
So, now if you set somebodysCups to 12000, and tell the processor to go fetch what's stored at whatever is in somebodysCups, you will end up with how many cups you drank.
So, how do I do that? Well, with the * operator again:
int someCups;
someCups = *somebodysCups;
That means, take somebodysCups, go to the address that it says and fetch the result (the * operator in action here), and store the result of all that in someCups (the = operator in action).
OK, so how do you set the value of a pointer variable - in other words, where did myCupsDrunk end up in RAM?
C provides the & operator for that: it takes the variable, and returns it's address. So, we can say:
somebodysCups = &myCupsDrunk;
and somebodysCups will now point to myCupsDrunk.
OK, so what use is it?
Well, what if we have more than one person that we are keeping track of, and want to change who's chocolate consumption we are concerned with at the moment...
int yourCupsDrunk;
somebodysCups = &yourCupsDrunk;
So, now I can update the number of cups drunk, without having to know exactly who's cups I'm being concerned with:
*somebodysCups = *somebodysCups + 1;
See what I did there with the * operator? Note that it works on both sides of the = operator. So, what that says is take whatever is at somebodysCups, go to __that__ address, add one to it, and store it back in whatever is at the address in somebodysCups.
So, if somebodysCups points to myCupsDrunk, then myCupsDrunk will get incremented. But, if it points to yourCupsDrunk, then yourCupsDrunk will get incremented, and not myCupsDrunk. Handy, eh?
And on that foundation, all of computer science is built: without pointers, data structures would be more-or-less impossible, algorithms would be reduced to minimal capability, and the whole thing would be no more powerfull than just a really fast adding machine.
So, clear as mud?