С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693

Разбор указателей и структур - каковы их суть и назначение

16.05.2015, 13:43. Показов 1795. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток форумчане. В университете мы изучаем C++ по учебнику Павловской и Щупака. Недавно прошли главы по Указателям и Структурам. Ровным счетом понятно только одно - темы чрезвычайно нужные и важные, но до мозгов не доходит. Помогите разобраться с этими понятиями. Зачем они нужны? Почему нельзя использовать обычные переменные обходя указатели, кроме случаев с динамическими массивами? Какой у них синтаксис? Для чего нужны структуры? Прошу разъяснить досконально, ибо очень уж хочется понять эти темы, желательно с примерами. Спасибо!

P.S. Ещё бы хотелось побольше узнать о процедурах. Их синтаксическая структура, и применение.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.05.2015, 13:43
Ответы с готовыми решениями:

Каковы суть и назначение ref и out
Читал книги, юзал msdn, но все равно не смог понять про операторы ref и out, точнее про ref немножко понял.

Каковы суть и назначение #include <iomanip>
Подскажите новичку, что такое #include &lt;iomanip&gt; и для чего это надо? Только на понятном языке :D

Делегаты и события - каковы их суть и назначение
Привет. Сейчас изучаю C#. Подошел к теме делегатов и событий. И вот если с делегатами еще более-менее ясно, то механизм событий остается...

4
 Аватар для bogdan_017
21 / 21 / 19
Регистрация: 18.03.2014
Сообщений: 148
16.05.2015, 15:39
Лучший ответ Сообщение было отмечено Bespridelschic как решение

Решение

Структура - хороший способ систематизировать данные. Представим ситуацию, что мы пишем что-то подобное базе данных. У нас есть имя, и зарплата одного рабочего. Для этого можно использовать и переменные. Тогда мы имеем:
C++
1
2
char name[20];
int salary;
Но теперь представим, что рабочий не один, а 5. Тогда нужно уже писать:
C++
1
2
3
4
5
6
7
8
9
char name1[20];
char name2[20];
//.....
char name5[20];
 
int salary1;
int salsry2;
//............
int salary5;
А теперь представьте, что рабочих не пять, а тысяча. Не рационально прописывать под каждого переменные.Гораздо удобнее один раз прописать ту самую "характеристику", то бишь структуру, и создать массив из этих структур под количество рабочих:
C++
1
2
3
4
struct enterprise{
  char name [20];
  int salary;
} workers[1000];
Теперь обратиться к имени рабочего №100 можно таким образом:
C++
1
workers[100].name

Процедура/функция - хороший способ значительно сократить код программы, не дублируя при этом один и тот же код, либо код, выполняющий практически одинаковые действия. Допустим нам нужно заполнить наш массив структур, описанный выше. В этом случае получаем:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void FillStruct(enterprise *filled)
{
 cin>>filled.name;
 cin>>filled.salary;
}
 
void main ()
{
enterprise anotherworkers[100];
for (int i=0; i<100; i++)
FillStruct(anotherworkers[i]);
 
//допустим нам нужно ввести заново данные для какого-то рабочего, например 25-го, получаем:
FillStruct(anotherworkers[25]); //вместо двух строк мы написали одну. 
 
/*на маленькой структуре это не очень хорошо чувствуется, но допустим у структуры было бы 10 полей.
Таким образом, мы повторно написали бы всего одну строку вместо десяти*/
}

Указатель, грубо говоря, это номер ячейки памяти (ее адрес). Зачастую их используют для передачи в функцию параметра/объекта по ссылке:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
//допустим уже есть структура с данными и функция, которая выводит ее поля на экран
struct enterprise{
  char name [20];
  int salary;
} worker;
 
//описать можно тремя способами:
void print (enterprise PrintedStruct)
{cout<<PrintedStruct.name<<PrintedStruct.salary;} 
/*в этом случае создается копия переданной в функцию структуры и выводятся копии переменных 
исходной структуры.
если структура содержит много полей, или если вы передаете довольно размерный массив структур, 
то это повлияет на производительность*/
 
void print (enterprise *PrintedStruct);
void print (enterprise &PrintedStruct);
/*в этих случаях мы передаем адрес ячейки памяти, не создавая копии. Обращаясь через адрес, мы 
получаем доступ к исходному объекту/структуре/переменной. По сути, оба варианта одно и то же, но 
немного есть различия в синтаксисе при передаче и обращении*/
Более подробную информацию советую почитать на бескрайних просторах гугла или яндекса. Еще можно найти хорошие видеоуроки на youtube.
2
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
17.05.2015, 08:37  [ТС]
Спасибо большое. Особенно за объяснение структур на примере рабочих.
0
25 / 25 / 11
Регистрация: 07.12.2012
Сообщений: 169
17.05.2015, 10:13
Я бы вам порекомендовал поменять учебник. (Липпман | Прата), у первого про c++11 стандарт больше информации.
По STL можно было бы почитать Джосьютиса.
Про многопоточное программирование можно почитать Энтони Уильямса.
1
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
17.05.2015, 10:17  [ТС]
Цитата Сообщение от xEmpire Посмотреть сообщение
Я бы вам порекомендовал поменять учебник. (Липпман | Прата), у первого про c++11 стандарт больше информации.
По STL можно было бы почитать Джосьютиса.
Про многопоточное программирование можно почитать Энтони Уильямса.
К сожалению поменять учебник на данный момент не представляется возможным, ввиду выполнения лабораторных работ по заданиям из практикума учебника. Однако я учту ваш совет при выборе литературы в будущем. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.05.2015, 10:17
Помогаю со студенческими работами здесь

Каковы суть и назначение Unit Tests
Всем привет! Народ, что такое Юнит тесты? с чем их едят и для чего вообще нужны? Расскажите кому не сложно, киньте ссылок полезных. ...

События в .NET - каковы их концепция и назначение?
Я просто не могу понять концепцию событий и зачем они вообще нужны. С делегатом тут всё понятно, указатель на функцию - вещь нужная, можно...

Поразрядные операторы - их суть и назначение
Господа, подскажите пожалуйста, что делают поразрядные операторы, если можно, то пожалуйста на пальцах, ибо дошел по шилдту до этого и...

Какова суть и назначение типов DWORD и HANDLE?
Добрый вечер, господа программисты. Недавно столкнулся в языке Си с такими типами(если это вообще типы) как DWORD и HANDLE. Что это...

Локал сервер 127.0.0.1 - его суть и назначение.
Здраствуйте у меня вопрос. вот небольшой лог одной из утилит - NET stat: смотрю что поключеться AvastSvc.exe, TCP, 127.0.0.1, 12080,...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru