Справочная система C guide


Указатели и массивы


Замечание. Допустимо бесконечно большое число различных типов указателей и массивов. Далее следуют типовые примеры.

Указатель на основной тип

Пример

char *p,

Переменная р является указателем на символ, т. е. этой переменной должен присваиваться адрес символа. Указатель на указатель

Пример

char **t,

Переменная t - указатель на указатель символа. Одномерный массив

Пример

int a [50];

Переменная а - массив из 50 целых чисел. Двухмерный массив

Пример



char m[7][50];

Переменная m - массив из семи массивов, каждый из которых

состоит из 50 символов. Массив из семи указателей

Пример

char *G[7];

Массив G состоит из указателей на символы. Указатель на функцию

Пример

int (*f)();

f - указатель на функцию, возвращающую целое значение. Структуры Структура' объединяет логически связанные данные разных типов. Структурный тип данных определяется следующим описанием:

struct имя _структуры {

описания_элементов

Пример

struct dinner {

char * place,

float cost,

struct dinner *next, };

Структурная переменная описывается с помощью структурного типа.

Примеры

struct dinner week_days [7], /* массив структур */

struct dinner best_one, /* одна структурная переменная */

struct dinner *p; /* указатель на структурную переменную */ Поля бит в структурах Поле бит - это элемент структуры, определенный как некоторое число бит, обычно меньшее, чем число бит в целом числе. Поля бит предназначены для экономного размещения в памяти данных небольшого диапазона. Пр имер

struct bfeg {

unsigned int of_fldl 10;

unsigned int bf_fld2 :

Данная структура описывает 10-битовое поле, которое для вычислений преобразуется в значение типа unsigned int, и 6-битовое поле, которое обрабатывается как значение типа unsigned int. Объединения Объединение' описывает переменную, которая может иметь любой тип из некоторого множества типов.

Определение объединенного типа данных аналогично определению структурного типа данных

union имя объединения { описания_элементов },


Пример

union bigword {long bg_long, char *bg_char[4]}

Данные типа union bigword занимают память, необходимую для размещения наибольшего из своих элементов, и выравниваются в памяти к границе, удовлетворяющей ограничениям по адресации как для типа long, так и для типа char * [4]

Описание переменной объединенного типа

Пример

union bigword x,

union bigword *p,

union bigword a[l00],

7.6. Перечисления

Данные перечислимого типа относятся к некоторому ограниченному множеству данных Определение перечислимого типа данных

enum имя _перечислимого типа { список значении}

Каждое значение данного перечислимого типа задается идентификатором

Пример

enum color {

red green yellow

}

Описание переменной перечислимого типа

Пример

enum color chair,

enum color suite [40];

Использование переменной перечислимого типа в выражении

Пример

char = red,

suite [5] '= yellow

7.7. Переименование типов Формат

typedef старый _тип новый_тип

Примеры

typedef long large

/* определяется тип large эквивалентный типу long */

typedef char *stnng

/* определяется тип string эквивалентный типу char * */ Переименование типов используется для введения осмысленных или сокращенных имен типов, что повышает понятность программ, и для улучшения переносимости программ (имена одного типа данных могут различаться на разных ЭВМ)
Содержание раздела