КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Статические строки#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
|