What Mason said. It's pretty straightforward. When I was doing this, I had a Sprite object defined that had a pointer to an SDL_Surface that was it's source sheet and also a Rect object defining the portion of that Surface that actually comprised the Sprite. Then I had animated Sprites that had a Surface and an array of Rects defining various frames of animation, etc, etc.