Advent Calendar #13 - C is object-oriented?

Advent Calendar #13 - C is object-oriented?

Although this does not fit the current series of javascript, typescript and web development paths, I still want to talk about, it because I recently learned about it.

For a long time, I thought, that functional programming was called functional programming, because it does not allow object-oriented programming.

I missed, that object-oriented languages are written in functional programming languages. Therefore there has to be a possibility.

And well it's quite easy to implement the most basic object-oriented features within very basic steps.


Structs are used to group certain correlating variables. A struct is our class, without encapsulation and functions on the objects.

Let's look at a simple user class. Written in Typescript like this.

class User {
  public username: string;
  public admin: boolean;

  public sayName() {
     return "Hello " + this.username;

The same can be built in C.

struct User {
  char username[32];
  int admin;

void say_name(User *user) {
  printf("Hello %s", user->username);


The whole point of this mini-post is to show you, that C just because it is a functional programming language, does not mean, that there are just primitives and you are doing maths all the time.

I did this to show you my latest learnings about it as I was quite amazed.