On peut dire que les structures sont les 'ancêtres' des classes. Effectivement, à première vue, une classe est une structure qui contient en plus des fonctions, mais ce qui fait la grosse différence, c'est ce qui est expliqué dans le troisième volet du monde des objets, l'héritage. Avoir des comportements de base que l'on peut redéfinir pour un objet plus pointu, puis redéfinir encore pour une classe encore plus précise, comme un accessoire, dérivé en aiguillage, puis en aiguillage lent, pour finir en aiguillage lent Tortoise ! On comprend que l'activation de l'accessoire sera différent selon la classe. Et manipuler un accessoire, et appeler 'On()' sans se préoccuper du véritable type de l'accessoire est un luxe de programmation inouï...
Les structures décrivent des objets plats, contigus mais séparés. Les classes définissent une hiérarchie, certaines héritant des données et des comportements des autres... Le monde objet est un autre monde !