Указатели - разобрать код и причину его неработоспособности - C (СИ)
Формулировка задачи:
Всем привет!
Возможно,вопрос глупый,но я не могу разобраться,а спросить некого,так как изучаю сам.
Упражнение из книги Кернигана и Ритчи.
Пишем функцию strcat()
Так работает,но если сделать вот так,то уже не получается
В связи с этим мне не понятно,почему второй вариант не рабочий?
Пока не ноль идем по строке же,просто более короче записали первый!
Заранее спасибо!
void strcat(char *s, char *t) { while(*s) s++; while(*s++ = *t++) ; }
void strcat(char *s, char *t) { while(*s++) ; while(*s++ = *t++) ; }
Решение задачи: «Указатели - разобрать код и причину его неработоспособности»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int values[] = { 40, 10, 100, 90, 20, 25 }; int compare (const void * a, const void * b) { return ( *(int*)a - *(int*)b ); } int main () { int n; qsort (values, 6, sizeof(int), compare); for (n=0; n<6; n++) printf ("%d ",values[n]); return 0; }
Объяснение кода листинга программы
- Объявлен массив целых чисел
values[]
с шестью элементами: 40, 10, 100, 90, 20, 25. - Объявлена функция
compare()
, которая будет использоваться в функцииqsort()
для сортировки массиваvalues[]
. Эта функция принимает два указателя на целые числа и возвращает разницу между ними. - В функции
main()
инициализируется переменнаяn
для использования в цикле. - Функция
qsort()
вызывается для сортировки массиваvalues[]
с использованием функции сравненияcompare()
. Первый аргумент - это начало массива, второй - количество элементов (6), третий - размер одного элемента (4, так как это int). - В цикле
for
с переменнойn
от 0 до 5 (так как массивvalues[]
содержит 6 элементов) выводится каждый элемент массиваvalues[]
с помощью функцииprintf()
. - Функция
main()
возвращает 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д