СИМВОЛЬНЫЕ СТРОКИ И ФУНКЦИИ НАД СТРОКАМИ

 

Всякий раз, когда компилятор встречается с чем-то заключённым в кавычки, он определяет это как строковую константу. Символы+'\0' записыватся в последовательные ячейки памяти. Если необходимо включить кавычки в символьную строку, нужно поставить впереди \".

Строковые константы размещаются в области данных. Вся фраза в кавыч-ках является указателем на место в памяти, где записана строка. Это аналогично имени массива, служащего указателем на адрес расположения массива. Для вывода символьной константы служит идентификатор %s.

char mas[] = "Это одна строка";

mas - адрес строки -> &m[0] *mas=='Э'.

Можно использовать указатель для создания строки.

char *str = "Таблица результатов";

char str[]= "Таблица результатов".

Сама строка размещается в области данных, а указатель инициализируется адресом.

void main(void){

char* mesg="Ошибка чтения";

char* copy;

copy = mesg; создается второй указатель на строку.

printf ("%S", copy);

printf ("%S", mesg);

}

char* name;

scanf ("%S", name); //Так нельзя !!! Будет запорчена память.

char name [81]; //Нужно в начале определить массив

 

Массивы символьных строк

 

1. Строки в символьный массив можно вводить с клавиатуры.

char mas[80+1];

scanf("%S",mas);

Если требуется несколько строк, то организуем цикл ввода

char mas[4][81];

for (i=0; i<4; i++)

sсanf("%S", mas[i]); // &mas[i][0]

 

2. Можно сразу инициализировать в программе.

char m1[] = "Только одна строка"; - автоматически определяется

длина строки + 1 байт на '\0'.

Размер массива можно задать явно.

char m2[50] = "Только одна строка"; //18+1

char m3[]={'c', 'm', 'p', 'o', 'k', 'a', '\o'};

 

char masstr[3][16]={"Первая строка",

"Вторая строка",

"Третья строка" };

*masstr[0]=='П';

*masstr[1]=='B';

*masstr[2]=='Т';

 

static char *masstr[3]= {"Первая строка",

"Вторая строка",

"Третья строка" };

Однако в этом случае организуется рваный массив. Длина строк разная и зря не расходуется память.

 

Массивы указателей

 

Можно определять массивы указателей

int* parray[5]; //5 указателей на целые значения.

*parray[3] - //3-й элемент массива.

char *keywords[5]={"ADD", "CHANGE", "DELETE", "LIST", "QUIT"};

В памяти

keyword[0] – адрес 10000 строка ADD\0 4б

keyword[1] - 10004 CHANGE\0 7б

keyword[2] - 10011 DELETE\0 7б

for (i=0; i<5; i++)

printf("%S", keywords[i]);

 

char *key[3],**pt; //определение указателя на указатель

pt=key;

printf(«%s %d\n»,*pt,**pt); //распечатывается первая строка и код первой буквы

 

Указатель как возвращаемое значение функции








Дата добавления: 2016-02-02; просмотров: 794;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.