Указатели - разобрать код и причину его неработоспособности - 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, что означает успешное завершение программы.