МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів
Контакти
Тлумачний словник Авто Автоматизація Архітектура Астрономія Аудит Біологія Будівництво Бухгалтерія Винахідництво Виробництво Військова справа Генетика Географія Геологія Господарство Держава Дім Екологія Економетрика Економіка Електроніка Журналістика та ЗМІ Зв'язок Іноземні мови Інформатика Історія Комп'ютери Креслення Кулінарія Культура Лексикологія Література Логіка Маркетинг Математика Машинобудування Медицина Менеджмент Метали і Зварювання Механіка Мистецтво Музика Населення Освіта Охорона безпеки життя Охорона Праці Педагогіка Політика Право Програмування Промисловість Психологія Радіо Регилия Соціологія Спорт Стандартизація Технології Торгівля Туризм Фізика Фізіологія Філософія Фінанси Хімія Юриспунденкция |
|
|||||||
Приклад/* 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. Рекурсія.
Читайте також:
|
||||||||
|