Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Статические строки




#define SIZE 80 // Размер строки только константное данное

или

const int SIZE=80;

char str[SIZE];

char str[SIZE]=”Hello!”; // с инициализацией

Особенность строки: объем выделенной памяти отличается от реального размера введенной строки.

Реальный размер вычисляется.

 

Как определить адрес символа строки?

Имя строки является константным адресом строки.

str+i – адрес символа с индексом i (i=0, с шагом 1)

 

Как определить значение символа строки?

*(str+i) или str[i]

 

Динамические строки

Размерность может быть константой или переменной.

#define SIZE 80

или

const int SIZE=80

или

int SIZE=80;

или

cin>>SIZE;

char *p;

p=new char[SIZE];

delete []p;

Особенность – без инициализации

 

Как определить адрес символа строки?

p+i – адрес элемента с индексом i

*(p+i) – значение элемента с индексом i

p[i]

 

Стандартный цикл обработки строки

1) char str[80];

for (i=0; str[i]!=0; i=0)

{

алгоритм обработки str[i]/*(str+i)

}

2) перебор строки, когда переменная цикла – адрес текущего символа

char *pBegin=new char[80];

char *p; // адрес текущего символа

for (p=pBegin;*p!=0;p++)

{

алгоритм обработки текущего символа *p

}

 

Задача: дана строка, вычислить её размер

 

СТАТИЧЕСКИ

int main(void)

{

char str[80];

int i, kol;

cin.getline(str,80);

for(kol=0,i=0;str[i]!=0;i++)

kol++;

cout<<kol<<endl;

return 0;

}

ДИНАМИЧЕСКИ

int main(void)

{

char *p=new char[80];

int n=0;

cout << "\n Введите строку:";

cin.getline(p,80);

// цикл построен таким образом, что p содержит адрес текущего символа

while(*p!=0)

{

n++;

p++; // Увеличиваем адрес для перехода к следующему символу

}

cout << "\n Кол-во=" << n << endl;

return 0;

}

 


+

24. Одномерные числовые массивы в языке С++: объявление (статически), инициализация, доступ к элементам массива, стандартный цикл обработки.

Одномерные числовые массивы

Особенность – любая обработка численного массива – цикл.

Под числовой массив выделяем памяти столько, сколько необходимо.

Статические массивы

1) Как объявить?

Размерность задается только константным данным(или целым)

#define SIZE 7

или

const int SIZE=7;

int mas[SIZE];

или

int mas1[SIZE]={1,2,3,4,5,6,7}; // с инициализацией

После выделения памяти в элементах массива находится «мусор». При объявлении массива возможна инициализация.

Если количество инициализирующих меньше, чем необходимо, остальные обнуляются. Если больше – ошибка компиляции.

 

2) Как определить адрес и значение элемента массива?

Имя массива – константный адрес первого элемента массива.

mas+i – адрес элемента с индексом i : от 0 для SIZE-1 шагом 1

*(mas+i) – значение элемента с индексом i : от 0 для SIZE-1 шагом 1

 


Поделиться:

Дата добавления: 2015-01-29; просмотров: 88; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты