А насколько глубоко ты копаешь? Потому что любые данные в конечном итоге, как бы они там красиво ни назывались - это просто ячейки в памяти. Просто в С это не просто ячейки в памяти, а очень просто ячейки в памяти - там хранится только какое-то значение, безо всяких дескрипторов, добавочных указателей, метаданных и прочих наворотов.
>и как я понял классов и структур там нет,
Структуры там есть - чистые и незамутненные. Тоже исключительно данные, идущие подряд. В других языках даже для совместимости приходится иногда использовать специальные конструкции, например С-подобная структура в паскале - это не просто record, а packed record.
>В c# например такие типы как int, float и тд это структуры, string и тд это классы.
И это не совсем так. Когда ты описываешь какой-нибудь примитивный тип, компилятор не выделяет под него место для методов этой самой структуры. Иначе бы программы тупо не помещались ни в какую разумную память. А под методы память выделяется, во-первых, только один раз, а во-вторых - только под те из них, которые использованы в программе. Такие вот дела.