11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701

Читаю книгу

14.08.2021, 19:12. Показов 14622. Ответов 222
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Когда пишу, то что читаю, запоминаю лучше.

Читаю книгу Курс программирования на языке СИ. Сергей Фомин, Вадим Подбельский
Есть такое предложение там:
Идентификаторы могут иметь любую длину, но компилятор учитывает не более 31 символа от начала идентификатора. В некоторых
компиляторах это ограничение еще более жесткое, и учитываются
только первые 8 символов любого идентификатора. В этом случае
идентификаторы NUMBER_OF_ROOM и NUMBER_OF_TEST
в программе будут неразличимы.
-----------------------------------------------
Непонятно что они имеют в виду под идентификатором? Возможно имена присваеваемые переменным?
Эти имена присваемые переменным не могут превышать 31 символ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.08.2021, 19:12
Ответы с готовыми решениями:

Читаю из файла, scanf, число с лидирующим нулем
На VS 2010 #include<stdio.h> void main() { freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); ...

Читаю книгу, нужны задания
Начал читать Троелсена. Вроде все понятно и доступно объясняет, но программирование- это прежде всего практика. Вот прочитал я главу, про...

Читаю книгу,есть то чего я не понял)
Привет,форум!) Я читаю книгу "Шилдт Г. С++ Базовый курс (3-е издание, 2010)" Свежее не нашёл,но когда я пытаюсь использовать или...

222
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,347
21.08.2021, 21:56
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от koeltrad Посмотреть сообщение
Здесь int *a =&b; значения у b ещё нет и идёт уравнивание значения *a =b
Нет, никакого "уравнивания значения" тут не идет.

Цитата Сообщение от koeltrad Посмотреть сообщение
Телепортация- это я имел в виду сохранение значения переменной в нескольких местах одновременно.
Не существует никаких "нескольких мест" и, соответственно, нет никакой "телепортации".

Цитата Сообщение от koeltrad Посмотреть сообщение
А почему сохранение переменных во всех местах одновременно?
Потому что если снизу приписать b=20; то значение у переменной b ВЫШЕ по коду появится. ВЫШЕ, Карл))
С простыми переменными так не сработает.
Этот какой-то бессмысленный набор слов.

Троллинг?
0
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
21.08.2021, 22:01  [ТС]
Возьмём этот же код.

C
1
2
3
4
5
6
7
8
#include<stdio.h>
int main() {
    int b;
    int *a =&b;
    b=20;
    printf("%d\n", *a);
return 0;
}
В строке b=20; здесь в b хранится 20? Хранится.
Теперь самое главное: int *a =&b здесь хранится 20 в переменной b?
Хранится, иначе как бы *а получила значение 20.
-------------------
А, ну если такой разговор, то буду обходиться короткими сообщениями если вообще.
0
из племени тумба-юбма
 Аватар для мама Стифлера
2523 / 1819 / 419
Регистрация: 29.11.2015
Сообщений: 8,857
Записей в блоге: 15
21.08.2021, 22:07
Цитата Сообщение от koeltrad Посмотреть сообщение
иначе как бы *а получила значение 20
уже отвечали на этот вопрос и дали рекомендации:
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Запустите этот код и помедитируйте над адресами. И над тем, что для переменной ptr можно получить ТРИ числа: адрес самой переменной, адрес куда она указывает и значение куда она указывает
0
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
22.08.2021, 02:41  [ТС]
Если нет полной теории, я выдумываю свою.
Значение (*a), Адрес(&a), Указатель(a). Медитировал уже.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
22.08.2021, 02:41
Цитата Сообщение от koeltrad Посмотреть сообщение
Если нет полной теории, я выдумываю свою.
А не нужно ничего выдумывать. И видосики на ютубчике смотреть не нужно. Нужно книжки читать - там всё есть.
Цитата Сообщение от koeltrad Посмотреть сообщение
Возьмём этот же код.
C
1
2
3
4
5
6
7
8
9
#include<stdio.h>
 
int main(void) {
    int b;
    int *a =&b;
    *a=20;
    printf("%d\n", b);
    return 0;
}
Так должно быть нагляднее.
0
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
22.08.2021, 03:23  [ТС]
Что именно нагляднее должно быть? Тот же смысл, но другим боком.
Этот код я объяснить могу. Для себя чтоб писать, понимать и на начальном этапе попрактиковаться я понимаю что здесь происходит совершенно ясно.
Я пытался рассказать как я понял и пока что всё сходится. Даже с двумя, тремя и.т.п. звёздочками, указатель в указателе.
Спасибо за код, но я не знаю что я понять должен. Когда начну дальше книгу читать может пойму. А сейчас я хочу закрепить сначала указатели на практике, попрактиковаться. Неделю наверное буду практиковать.
Блин, я не отказываюсь читать книгу. Не знаю даже почему пошёл другим путём, наитие какое то)) Скоро продолжу, но с багажом неправильных знаний(по вашей версии) и практикой.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,347
22.08.2021, 03:31
Цитата Сообщение от koeltrad Посмотреть сообщение
Возьмём этот же код.

C
1
2
3
4
5
6
7
8
#include<stdio.h>
int main() {
    int b;
    int *a =&b;
    b=20;
    printf("%d\n", *a);
return 0;
}
В строке b=20; здесь в b хранится 20? Хранится.
Да.

Цитата Сообщение от koeltrad Посмотреть сообщение
Теперь самое главное: int *a =&b здесь хранится 20 в переменной b?
Нет. В переменной b здесь пока лежит мусор.

Цитата Сообщение от koeltrad Посмотреть сообщение
Хранится, иначе как бы *а получила значение 20.
*a и b - это одно и то же. Как только b получило значение 20, *a, разумется тоже стало 20, потому что *a - это и есть b. *a - это пусть доступа к b. Через *a вы видите именно b.

Вам это уже сто раз объяснили. Что вам непонятно?
1
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
22.08.2021, 03:46  [ТС]
Не нервничайте) Всё понятно. Я объяснил то же самое но другим способом.
Правильный, ваш способ я понял. Но интересный для себя вывод может найду только в книжке. Хочется знать всё подробно.
Пойду практиковаться. Очень интересная тема.
0
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
22.08.2021, 04:51  [ТС]
https://ru.wikipedia.org/wiki/... %8B%D1%85)
Изображения
 
0
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
22.08.2021, 05:06  [ТС]
Цитата Сообщение от koeltrad Посмотреть сообщение
(&b- отсюда берётся адрес, а не сохраняется там)
https://ru.wikipedia.org/wiki/... %8B%D1%85)
Передавая указатель на переменную в функцию мы не делаем копию этой переменной, а редактируем её напрямую[2]. Указатели используют для хранения адресов точек входа для так называемых подпрограмм в процедурном программировании и для подключения динамических подключаемых библиотек.
0
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
22.08.2021, 05:16  [ТС]
Языки программирования, в которых предусмотрен тип указателей, содержат, как правило, две основные операции над ними: присваивание и разыменование.
Первая присваивает указателю некоторый адрес. Вторая служит для обращения к значению в памяти, на которое указывает указатель.
Изображения
 
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,347
22.08.2021, 05:46
Цитата Сообщение от koeltrad Посмотреть сообщение
Передавая указатель на переменную в функцию мы не делаем копию этой переменной, а редактируем её напрямую[2].
Нет, мы не редактируем ее напрямую. Мы редактируем ее косвенно - через указатель. Доступ к переменной через указатель так и называется - непрямым или косвенным.
1
11 / 7 / 4
Регистрация: 29.07.2019
Сообщений: 701
22.08.2021, 21:59  [ТС]
Зачем нужно возиться с указателем в указателе(две и более звёздочек)? Если можно клонировать один указатель и во всех переменных будем иметь адрес указывающий на одну ячейку.
С указателем в указателе намного интереснее конечно это делать, но запутанно.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int main(){
   int b=5;
   int *a =&b;
 
   int *c = a;
   int *d = a;
   int *e = a;
   int *f = a;
   int *g = a;
   int *h = a;
 printf("%d\n", *h);
}
0
 Аватар для qppq
145 / 89 / 23
Регистрация: 31.08.2016
Сообщений: 780
Записей в блоге: 2
23.08.2021, 08:44
Цитата Сообщение от koeltrad Посмотреть сообщение
можно клонировать один указатель и во всех переменных будем иметь адрес указывающий на одну ячейку
зачем делать, кучу указателей на одну переменную?

Цитата Сообщение от koeltrad Посмотреть сообщение
с указателем в указателе(две и более звёздочек)
обычно говорят указатель НА указатель (массив указателей)
C++
1
2
3
int a, b, c, d;
int *ptr[4] = { &a,&b,&c,&d }; // массив указателей
int **ptrptr = &ptr[4]; //  указатель на массив указателей
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
23.08.2021, 08:53
Цитата Сообщение от qppq Посмотреть сообщение
int **ptrptr = &ptr[4]; //  указатель на массив указателей
Указатель на массив указателей выглядит так:
C
1
int* (*ptrptr)[4] = &ptr;
А то что у Вас - это просто указатель на указатель на int
1
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,083
23.08.2021, 09:42
Цитата Сообщение от koeltrad Посмотреть сообщение
Зачем нужно возиться с указателем в указателе(две и более звёздочек)?
Самое распространенное использование указателя на указатель - чтобы вернуть указатель из функции.
C
1
2
3
4
5
int func(int **arr, int len){
  *arr = malloc(sizeof(int)*len);
  if( *arr == NULL )return 0;
  return 1;
}
Другое применение: некоторые извращенцы делают таким способом эмуляцию двумерного массива:
C
1
2
3
4
int **arr;
*arr = malloc(sizeof(int*)*W);
for(int i=0; i<W; i++)arr[i] = malloc(sizeof(int)*H); //да, проверки успешности они регулярно забывают
arr[2][3] = 4;
1
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
23.08.2021, 09:50
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
да, проверки успешности они регулярно забывают
Самое интересно в том, что эта проверка может быть совершенно бесполезной.
0
фрилансер
 Аватар для Алексей1153
6501 / 5737 / 1134
Регистрация: 11.10.2019
Сообщений: 15,372
23.08.2021, 09:51
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
int **arr;
*arr =
разыменование неинициализированного указателя - плохая примета
0
 Аватар для COKPOWEHEU
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,083
23.08.2021, 11:33
Тьфу, конечно, там разыменование не нужно. Присваиваем-то мы внешнему указателю:
C
1
2
int **arr;
arr = malloc(...);
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13215 / 6847 / 1826
Регистрация: 18.10.2014
Сообщений: 17,347
23.08.2021, 18:34
Цитата Сообщение от koeltrad Посмотреть сообщение
Зачем нужно возиться с указателем в указателе(две и более звёздочек)?
У указателя всегда только одна звездочка: T* ptr.

Все остальное (включая дополнительные звездочки) - это уже указуемый тип T. Это внутреннние непринципиальные детали указуемого типа T. Указуемый тип T может быть любым. Все типы равны с этой точки зрения. И является ли указуемый тип T сам по себе указателем - соврешенно непринципиально. Нет никакой разницы между ситуацией, когда указуемый тип T является указателем, и когда не является.

Поэтому не надо забивать себе голову некими "две и более звёздочек". Считайте, что значение имеет только одна - первая - звездочка.

Цитата Сообщение от koeltrad Посмотреть сообщение
Если можно клонировать один указатель и во всех переменных будем иметь адрес указывающий на одну ячейку.
Можно. Не ясно только, какое это все имеет отношение к теме.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.08.2021, 18:34

Читаю книгу все работал а щас выдает такую ошибку
Вот смотрите не понимаю в чем дело!? &lt;html&gt; &lt;head&gt; &lt;title&gt;Опрос&lt;/title&gt; &lt;head&gt; &lt;body&gt; &lt;h1&gt;Предварительный...

Читаю книгу Страуструпа для новичков но мне одному она кажется трудной и не совсем понятной?
на протяжении всей книги он показывает код в виде ...&lt;...&gt;... почему просто бы не объяснить?в ООП Р.Лафоре и Б.Эккеля все норм по...

Читаю книгу Криса Касперски "Искусство дизассемблирования"
Читаю книгу Криса Касперски &quot;Искусство дизассемблирования&quot;, в которой автор рассказывает, каким образом можно производить модификацию...

читаю читаю не найду
расскажите какие функции в boost::asio отвечают за то если подключился кто то то они значения возращают дайте линк а то по туториалу на...

Читаю из файла в vector
Всем доброго времени суток, пытаюсь считать файл в вектор... Но трабл, в вектор всегда пишется ноль, не могу понять где косяк... В коде...


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

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

Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru