Структуры C - это особые большие переменные, которые содержат внутри несколько именованных переменных. Структуры являются базовой основой для объектов и классов в C. Структуры используются для:
Самый простой пример структур - это точки , которые представляют собой единый объект, содержащий две переменные - x
и y
. Определим точку:
struct point {
int x;
int y;
};
Теперь давайте определим новую точку и воспользуемся ею. Предположим, функция draw
получает точку и рисует ее на экране. Без структур для его использования потребовалось бы два аргумента - каждый для каждой координаты:
/* draws a point at 10, 5 */
int x = 10;
int y = 5;
draw(x, y);
Используя структуры, мы можем передать аргумент точки:
/* draws a point at 10, 5 */
struct point p;
p.x = 10;
p.y = 5;
draw(p);
Для доступа к переменным точки мы используем .
оператор точки .
Определения типов позволяют нам определять типы с разными именами, что может пригодиться при работе со структурами и указателями. В этом случае мы бы хотели избавиться от длинного определения точечной структуры. Мы можем использовать следующий синтаксис, чтобы удалять struct
ключевое слово каждый раз, когда мы хотим определить новую точку:
typedef struct {
int x;
int y;
} point;
Это позволит нам определить новую точку следующим образом:
point p;
Структуры также могут содержать указатели, что позволяет им хранить строки, или указатели на другие структуры, что является их реальной силой. Например, мы можем определить структуру транспортного средства следующим образом:
typedef struct {
char * brand;
int model;
} vehicle;
Поскольку марка является указателем на символ, тип транспортного средства может содержать строку (которая в данном случае указывает марку транспортного средства).
vehicle mycar;
mycar.brand = "Ford";
mycar.model = 2007;
Определите новую структуру данных с именем «person», которая содержит вызываемую строку (указатель на char) name
и вызываемое целое число age
.