Primer 4 Лекция 10

Primer 3 Лекция 10.

#include <iostream>

using namespace std;

int show_string(char *string)

{

while (*string) cout << *string++;

cout << endl;

}

int string_length(char *string)

{

int length = 0;

while (*string++) length++;

return(length);

}

int main()

{

system("chcp 1251");

char title[] = "Язык C++";

show_string(title);

cout << "содержит " << string_length(title) << " символов" << endl;

system("pause");

}

highlightSyntax('cpp_13539','cpp'); 10.1.3.Сканирование символьной строки.

Одно из наиболее употребляемых использовании указателей в программах на C++ заключается в сканировании символьных строк. Для уменьшения количества кода многие программы используют следующие операторы для сканирования строки:

while (*string)

{

// операторы

string++;

// продвинуть к следующему символу

}

10.1.4. highlightSyntax('cpp_48369','cpp'); Использование указателей с другими типами массивов.

Указатели широко используются с символьными строками. Можно использовать указатели с массивами других типов. Следующая программа использует указатель на массив типа float для вывода значений с плавающей точкой:

#include <iostream>

using namespace std;

int show_float(float *array, int number_of_elements)

{

int i;

for (i = 0; i < number_of_elements; i++) cout << *array++ << endl;

}

int main()

{

system("chcp 1251");

float values[5]={1.1, 2.2, 3.3, 4.4, 5.5};

show_float(values, 5);

system("pause");

}

highlightSyntax('cpp_21449','cpp'); Внутри функции show_float цикл for использует значение, указываемое с помощью указателя array, а затем увеличивает этот указатель до следующего значения. В данном случае программа должна передать параметр, который задает количество элементов массива, поскольку в отличие от символьных строк массивы типа float (или int, long и т. д.) не используют символ NULL для определения последнего элемента.
Программы могут использовать указатели на массивы любых типов. В предыдущей программе функция show_float увеличивала указатель для продвижения по массиву типа float. Указатель указывает на участок памяти, содержащий значение определенного типа, например char, int или float. Когда функция сканирует массив с помощью указателя, функция увеличивает указатель для продвижения от одного значения к следующему. Чтобы указатель указывал на следующий элемент массива, C++ должен знать размер каждого элемента (в байтах), чтобы определить, на сколько необходимо увеличить значение указателя. Для продвижения указа-
теля к следующему символу в массиве, C++ должен увеличить значение указателя на 1. Однако, чтобы указать следующее значение в массиве типа int C++ должен увеличить указатель на два байта (значение типа int занимает два байта памяти). Для значений типа. float C++ увеличивает указатель на 4 байта. Зная тип значения, на которое указывает указатель, C++ знает, на сколько необходимо увеличить значение этого указателя. В программах просто используется оператор увеличения, например pointer++. Однако C++ увеличивает реальное значение (адрес памяти), содержащееся в указателе, на корректную величину.

10.2. Структуры.

C++ позволяет хранить в массиве связанную информацию одного и того же типа. Группировка связанных значений в массив очень удобна. В большинстве случаев программам необходимо группировать связанную информацию разного типа.
Если вашей программе требуется хранить связанную информацию разных типов, она может использовать структуру.

Структура представляет собой переменную, группирующую связанные части информации, называемые элементами, типы которых могут различаться. Группируя данные в одну переменную подобным образом, упрощаются программы, снижается количество переменных, которыми необходимо управлять, передавать в функции.

10.2.1. Объявление структуры.

Структура определяет шаблон, с помощью которого программа может позднее объявить одну или несколько переменных. Другими словами, программа сначала определяет структуру, а затем объявляет переменные типы этой структуры. Для определения структуры программы используют ключевое слово struct, за которым обычно следует имя и левая фигурная скобка. Следом за открывающей фигурной скобкой указывается тип и имя одного или нескольких элементов. За последним элементом вы размещаете правую закрывающую фигурную скобку. В этот момент можно (необязательно) объявить переменные данной структуры:

struct name
 
{
int member_name_l; //Объявления элементов структуры
float member_name_2;
} variable; // Объявление переменной
}

Следующее определение создает структуру, содержащую информацию о служащем:

struct employee
{
char name [64];
long employee_id;
float salary;
char phone[10];
int office_number;
};

highlightSyntax('cpp_50044','cpp'); В данном случае определение не объявляет какие-либо переменные типа этой структуры. После того как определена структура, программа может объявить переменные типы этой структуры, используя имя структуры:

employee boss, worker, new_employee; //Объявление переменных

В данном случае оператор создает три переменные структуры employee. В некоторых случаях можно увидеть объявление, в котором структура предваряется ключевым словом struct:

struct employee boss, worker, new_employee;

Ключевое слово struct является обязательным при программировании на С, так что некоторые программисты могут включать его по привычке. Однако в C++ использовать ключевое слово struct необязательно.
Структура позволяет программам группировать информацию, называемую элементами, в одной переменной. Чтобы присвоить значение элементу или обратиться к значению элемента, используйте оператор C++ точку (.). Следующие операторы присваивают значения различным элементам переменной с именем worker струтуры employee;

worker.employee_id = 12345;

worker.salary = 25000.00;

Для обращения к элементу структуры укажите имя переменной, за которым следует точка и имя элемента. Следующая программа иллюстрирует использование структуры типа employee:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: