Hi,
please, initialize "i" to 0. Non-initialized variable store garbage, not zeroes.
It probably does not look very well, but otherwise correct:
If an object that has static storage duration is not initialized explicitly, then: — if it has pointer type, it is initialized to a null pointer; — if it has arithmetic type, it is initialized to (positive or unsigned) zero; — if it is an aggregate, every member is initialized (recursively) according to these rules; — if it is a union, the first named member is initialized (recursively) according to these rules.