Курсовая работа: Особливості мови програмування С
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;