Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Fotonic
0 / 0 / 0
Регистрация: 16.05.2015
Сообщений: 14
1

Указатели, Керниган и Ритчи 5.4

29.09.2015, 17:54. Просмотров 882. Ответов 6
Метки нет (Все метки)

Здравствуйте, нужна помощь начинающему. Читаю Керниган и Ритчи и не могу понять следующую вещь: зачем нам allocbuf в условии :
C
1
if(allocbuf + ALLOSIZE - allocp >= n)
Если allocp указывает на первый пустой символ, то разве ALLOSIZE - allocp не даёт нам искомый результат...
0
Миниатюры
Указатели, Керниган и Ритчи 5.4  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2015, 17:54
Ответы с готовыми решениями:

Керниган, Ритчи, указатели и упражнение 5.3
Добрый день! "Напишите свою версию функции strcat, ... с применением...

Ритчи и Керниган
В этом учебники в некоторых примерах прототип функции объявляется внутри другой...

Керниган/Ритчи упражнение 1.20
"Упражнение 1.20. Напишите программу detab, заменяющую символы табуляции во...

Компилятор С(Керниган ,Ритчи)
Здравствуйте! Открыл книгу Брайана Кернигана и Денниса Ритчи. Первое задание ...

Керниган Ритчи Упражнение 2.2
Добрый день. Помогите начинающему разобраться пожалуйста. Само...

6
Fonduee
Музыка нас Связала
229 / 229 / 52
Регистрация: 26.03.2008
Сообщений: 616
29.09.2015, 18:28 2
Лучший ответ Сообщение было отмечено Fotonic как решение

Решение

Цитата Сообщение от Fotonic Посмотреть сообщение
разве ALLOSIZE - allocp не даёт нам искомый результат
Метод "Яблоки - Груши" не рабоатет. ALLOСSIZE - это сколько мы аллоцировали, а allocp - указывает на область, где находится поинтер (он может быть к примеру, адрес на бум: 0x42FFA5). А если бы запросим всего 10 байт, то что мы получим отняв он сего значения значание allocp? Правильно, ничего хорошего.
1
Fotonic
0 / 0 / 0
Регистрация: 16.05.2015
Сообщений: 14
29.09.2015, 18:37  [ТС] 3
Я правильно понимаю, что (аllocbuf - allocp) даёт нам кол-во занятых символов? то есть это оба указателя...
0
Fonduee
Музыка нас Связала
229 / 229 / 52
Регистрация: 26.03.2008
Сообщений: 616
29.09.2015, 18:48 4
Цитата Сообщение от Fotonic Посмотреть сообщение
аllocbuf - allocp
Если их поменять местами или смотреть на абсолютную величину, то да.
1
Fotonic
0 / 0 / 0
Регистрация: 16.05.2015
Сообщений: 14
29.09.2015, 18:51  [ТС] 5
то есть allocbuf это указатель на начало строки?
0
Fonduee
Музыка нас Связала
229 / 229 / 52
Регистрация: 26.03.2008
Сообщений: 616
29.09.2015, 18:52 6
Лучший ответ Сообщение было отмечено Fotonic как решение

Решение

Цитата Сообщение от Fotonic Посмотреть сообщение
на начало строки?
На начало массива.
1
QewerC
6 / 6 / 9
Регистрация: 15.07.2015
Сообщений: 56
29.09.2015, 19:18 7
C
1
if(allocbuf + ALLOSIZE - allocp >= n)
И так ALLOSIZE 2000
Если вычем allocbuf(первое элемент массива, указатель)-allocp(последнея зарезервированая ячейка массива), получим сколько забил места со знаком минус, дальше прибавляем 2000 штуки(это сколько места нужно) и будет сколько осталось. Далее будем использовать еще места в массиве и получится разница: -2000(сколько заняли allocbuf-alloc) да плюс 2000(сколько нам надо) и есть 0, то есть места уже ноль осталось. Дальше он проверит больше или нет, но так минимум значение 1, то минимальное значение -2001+2000=-1 >= n в любом случае ложьь
0
29.09.2015, 19:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.09.2015, 19:18

Керниган/ритчи задачи 1.18
Упражнение 1.18. Напишите программу, которая будет в каждой вводимой строке...

Керниган/Ритчи упражнение 1.22
"Упражнение 1.22. Напишите программу, печатающую символы входного потока так,...

Керниган и Ритчи подсчет строк
после запуска вместо результата просто переходит на следущую строчку ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru