Oop singleton

global variable

 * http://www.blackwasp.co.uk/gofpatterns.aspx Singleton. The singleton pattern ensures that only one object of a particular class is ever created. All further references to objects of the singleton class refer to the same underlying instance.

you have a global variable, the references are the pointers that the all the functions have to this instance as their first paramater. Any function can change the instance variables(struct).

links
https://testing.googleblog.com/2008/08/root-cause-of-singletons.html , http://misko.hevery.com/2008/08/17/singletons-are-pathological-liars/ , http://misko.hevery.com/2008/08/21/where-have-all-the-singletons-gone/

https://matt.berther.io/

https://blogs.msdn.microsoft.com/scottdensmore/2004/05/25/why-singletons-are-evil/

http://www.davidtanzer.net/6_reasons_why_you_should_avoid_singletons

links
Oop