Приклад. /* strlen: повертає довжину рядка */

/* strlen: повертає довжину рядка */

int strlen(char *s)

{

int n;

for (n = 0; *s != '\0'; s++)

n++;

return n;

}

Оскільки змінна s - покажчик, до неї застосовна операція ++; s++ не робить ніякого впливу на рядок символів функції, яка звернулася до strlen. Просто збільшується на 1 деяка копія вказівника. Це значить, що всі виклики, такі як:

strlen("привіт"); /* рядкова константа */

strlen(array); /* char array[100]; */

Приклад .

Перший варіант strcpy, з використанням масиву, має наступний вигляд:

/* strcpy: копіює t в s; варіант з массивом*, що індексується/

void strcpy(char *s, char *t)

{

int i;

i = 0;

while ((s[i]= t[i]) != '\0')

i++;

}

Для порівняння приведемо версію strcpy з вазівниками:

/* strcpy: копіює t в s: версія 1 (з покажчиками) */

void strcpy(char *s, char *t)

{

while ((*s = *t) != '\0') {

s++;

t++;

}

}

Оскільки передаються лише копії значень аргументів, strcpy може вільно користуватися параметрами s і t як своїми локальними змінними. Вони належним чином були ініціалізовані вказівниками, які перходять кожного разу на наступний символ в кожному з масивів до тих пір, поки в копійованому рядку t не зустрінеться

'\0'.

На практиці strcpy так не пишуть. Досвідчений програміст віддасть перевагу більш короткому запису:

/* strcpy: копіює t в s; версія 2 (з вказівниками) */

void strcpy(char *s, char *t)

{

while ((*s++ = *t++) != '\0')

;

}

Приріст s і t тут здійснюється в керуючій частині циклу. Значенням *t++ є символ, на який вказує змінна t, перед тим, як її значення буде збільшено; постфіксний оператор ++ не змінює вказівник t, поки не буде взятий символ на який вказівник вказує.

Що стосується функції strcpy із стандартної бібліотеки <string.h> то вона повертає як свій результат ще й вказівник на нову копію рядка.

Приклад .Розглянемо функцію strcmp(s,t). Вона порівнює символи рядків s і t і повертає від’ємне, нульове або додатнє значення, якщо рядок s відповідно менший, рівний або більший за рядок t. Результат отримаєм за допомогою відніманням перших неспівпадаючих символів з s і t.

/* strcmp: видає < 0 при s < t, 0 при s == t > 0 при s > t */

int strcmp(char *s, char *t)

{

int i;

for (i = 0; s[i]== t[i]; i++)

if (s[i]== '\0')

return 0;

return s[i] - t[i];

}

Та ж програма з використанням вказівників виглядає так:

 

/* strcmp: видає < 0 при s < t, 0 при s == t > 0 при s > t */

int strcmp(char *s, char *t)

{

for ( ; *s == *t; s++, t++)

if (*s == '\0')

return 0;

return *s - *t;

}

Тема. Визначення функції. Оголошення функцій користувача. Рекурсія.

План

1. Визначення функції.Оголошення функцій користувача.

2. Формальні та фактичні параметри.

3. Рекурсія.

 

1. Визначення функції.

Потужність мови С++ багато в чому визначається легкістю і гнучкістю у визначенні і використанні функцій в С++-програмах. На відміну від інших мов програмування високого рівня в мові С++ немає ділення на процедури, підпрограми і функції, тут вся програма будується тільки з функцій.

Функція - це сукупність оголошень і операторів, зазвичай призначена для вирішення певного завдання. Кожна функція повинна мати ім'я, яке використовується для її оголошення, визначення і виклику. У будь-якій програмі на СІ повинна бути функція з ім'ям main (головна функція), саме з цієї функції, в якому б місці програми вона не знаходилася, починається виконання програми.

З використанням функцій в мові СІ зв'язано три поняття:

· визначення функції (опис дій, що виконуються функцією),

· оголошення функції (завдання форми звернення до функції),

· виклик функції.

Функція визначається з допомогою заголовку та тіла функції. Заголовок містить ім'я функції, тип результату, котрий вона виробляє, імена та типи формальних параметрів (записуються в дужках і розділяються комами). Тіло функції є складним оператором (блоком), котрий об'єднує описи внутрішніх змінних функції та оператори, котрі реалізують функцію.

У мові С++ немає вимоги, щоб визначення функції обов'язково передувало її виклику. Визначення використовуваних функцій можуть слідувати за визначенням функції main, перед ним, або знаходиться в іншому файлі.

 

 

Опис функції має такий вигляд:

 

<тип результату <ім'я функції (<список формальних параметрів)

{

<тіло функції>

}








Дата добавления: 2015-08-26; просмотров: 640;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.