if you associate a value to that variable at the same time as declaring it, would it reset each loop?
Yes it does.
I realize that I can declare it as a global, but I then I get to wonder, why not declare all variables as global (other than it being sloppy memory wise)
Memory-wise it won't make much difference. Either way it has to use a bit of your memory.
It's more the sloppiness of variable scope. Say you had a variable "count" which you accidentally used in more than one function. Especially if one called the other. Then you are getting confused, and you may find the variable contents change in ways you don't expect.
The major difference is if you use recursive functions. If you don't know what that means you probably don't need to worry. But briefly a recursive function is one which calls itself, directly or indirectly. Like this:
void foo (int a)
{
int b = a + 1;
foo (b);
}
In this example the variable b is newly created for every recursive call of foo, which wouldn't happen with a global variable. Also in this example it will eventually crash because it will recurse indefinitely.
For good programming style you should only use local variables unless you really need to keep the values around. Not to save memory but to avoid obscure programming bugs. If you start having a heap of global variables you start making a mess, and you have to remember what each one is used for, and not to use it for something else (like "count" or "i" or something).