Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Приклад

/* 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. I. Культура учебного труда как теоретическая и прикладная проблема педагогической психологии
  2. Абсолютні синоніми (наприклад, власне мовні й запозичені) в одному тексті ділового стилю вживати не рекомендується.
  3. Алгоритм однофакторного дисперсійного аналізу за Фішером. Приклад
  4. Аналіз структури та динаміки необоротних активів за даними Ф№1 «Баланс» (на прикладі ВАТ «Горизонт»)
  5. Ассиметричное прикладывание: руководство пользователя
  6. Базові та прикладні класифікації
  7. В процесі читання виділіть маркером або підкресліть приклади дії променів на живі організми.
  8. В чому полягає явище тунелювання через потенціальний бар’єр, наведіть приклади.
  9. Визначення і приклади
  10. Вільсон О. Г. Охорона праці в галузі (на прикладі будівництва). Навчальний посібник. – К.: «Основа». 2006. – 204 с.
  11. Возникновение прикладной психологии, 1892-1919
  12. ВПРАВА 11. Ознайомтеся з фрагментами наукових текстів, знайдіть приклади для характеристики синтаксичних особливостей викладу інформації українською мовою.




Переглядів: 508

<== попередня сторінка | наступна сторінка ==>
Приклад | Визначення функції.

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.009 сек.