Именно. Вплоть до банального - в отдельном файле объявляется некий
тип данных (структура и указатель на нее) и все функции из этого
файла принимают первым параметром такой указатель, что-то делая
вокруг этой сущности. Чем это от класса и методов отличается? - да
ничем, по сути. Но в С++ есть неймспейсы. И в одном файле их можно создавать несколько.
(пишущий на Паскале этого делать не станет)
А в Си можно сделать ОДИН *.Н файл на нескольких единиц компиляции.
(опять же, я делаю ровно один .Н на один .с)