Курсовая работа: Особливості мови програмування С

return(starting_address);

}

Ця функція зберігає і повертає початкову адресу рядка, це дозволяє програмам використовувати функцію таким чином:

cout << Btring_uppercase("Привет, мир!") << endl;

Реакція ЕОМ:

ПРИВЕТ, МИР!

2.1.2.4 Приклад 4

Не дивлячись на те що вказівники широко використовуються з символьними рядками, ви можете використовувати вказівники з масивами інших типів. Наприклад, наступна програма PTRFLOAT.CPP використовує вказівник на масив типа float для виведення значень з плаваючою крапкою:

#include <iostream.h>

void show_float(float *array, int number_of_elements)

{

int i;

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

}

void main(void)

{

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

show_float(values, 5);

}

Реакція ЕОМ:

1.1, 2.2, 3.3, 4.4, 5.5

усередині функції show_float цикл for використовує значення, що вказується за допомогою вказівника array, а потім збільшує цей вказівник до наступного значення. В даному випадку програма повинна передати параметр, який задає кількість елементів масиву, оскільки на відміну від символьних рядків масиви типа float (або int, long і т. д.) не використовують символ NULL для визначення останнього елементу.

2.1.2.5 Приклад 5

Сортування масиву з елементами довільного типа і критерієм порівняння, передаваним як параметр.

В данном примере реализована функция ssort, сортирующая методом пузырька массив данных произвольного типа. Количество элементов задается параметром n, размер каждого элемента – параметром sz, функция сравнения – параметром cmp. Поскольку типы элементов заранее неизвестны, указатель на первый элемент передается как void*. Внутри функции ssort он преобразуется к типу char* для возможности работы с адресной арифметикой. Функция memswap меняет местами две области памяти размера sz. В функцию сравнения передаются два указателя void* на сравниваемые элементы массива. Каждая конкретная функция сравнения вначале преобразует эти указатели к нужному типу и затем осуществляет собственно сравнение элементов. В программе, демонстрирующей варианты применения функция ssort, реализована сортировка целых чисел (по возрастанию и убыванию), текстовых строк, а также структур (по нескольким полям).

typedef int (*CMP)(const void*,const void*);

inline void swap(char& a, char& b)

{

char temp=a;

К-во Просмотров: 728
Бесплатно скачать Курсовая работа: Особливості мови програмування С