@fastkulob

Как создать свой тип данных в языке Си?

Я вчера задал этот вопрос но к сожелению мне так и не дали правильного ответа но скорее всего это я не четко обяснил проблему. Дело в том что в языке Си нету понятия строка это массив символов. Как создать тип данных строка. Помогите я новичок. Узнал про typedef char* string только это что не понимаю обьясните как создать тип данных строка(string) в Си. Библиотека string.h не имеет типа данных string так как пробовал написал string s = "Hello World".
компилировал gcc -std=gnu99 hello.c выдало ошибку что тип данных string не распозанан хотя был подкючён string.h.
P.S. Прошу прощения за грамматические ошибки в тексте.
  • Вопрос задан
  • 4233 просмотра
Решения вопроса 1
@MaM
Стандартный механизм определения нового тип в языке C, struct some{ ... }, union some{ ... }, enum some {...}. Подробней лучше почитать в стандарте или на https://en.cppreference.com/. Так же объявление типа указатель на объект типа type - type* type_name; или указатель, на указатель объекта типа type - type*** type_name; и т.д. , указатель на функцию void(func*)(int, int), массив объектов тип type some[num], (как с массивами так и с указателями возможны различные измерения типа массив массивов т.е. двумерный) однако с указателями на функции, а в обшем и преобразовании имени к указателю и преобразованию массивов к указателям и тд следует относится внимательно. Вообшем случае такие тонкости уже уровень для серьезного написания дров или осей, так что советую запастись стандартом так же система типов серьезно отличается от таковой в с++ (просто заранее предупреждаю). Так же, typedef struct {...} some полезная идеома языка си для создания алиса типа на анонимную структуру ( да есть анонимные структуры и другие типы данных), часто полезны в сочетании с расшерением гцц для вложенных функций для использования в scope in place. Для более глубокого понимания еше могут быть полезны битовые поля, часто в месте с выравниванием используюся для каламбуров типизации в сериализаторах и реализации псевдонаследования, каноническим примером могут служить сокеты беркли. Забыл упомянуть некоторые модификаторы типов такие как long long и тд тоже по сути используют зарезервированный фундаментальный тип https://stackoverflow.com/questions/35401017/is-lo... .
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы