Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Wanna be serious
586 / 473 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
1

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

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

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

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

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

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

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

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

4
21 / 21 / 19
Регистрация: 18.03.2014
Сообщений: 148
16.05.2015, 15:39 2
Лучший ответ Сообщение было отмечено 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
586 / 473 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
17.05.2015, 08:37  [ТС] 3
Спасибо большое. Особенно за объяснение структур на примере рабочих.
0
25 / 25 / 11
Регистрация: 07.12.2012
Сообщений: 169
17.05.2015, 10:13 4
Я бы вам порекомендовал поменять учебник. (Липпман | Прата), у первого про c++11 стандарт больше информации.
По STL можно было бы почитать Джосьютиса.
Про многопоточное программирование можно почитать Энтони Уильямса.
1
Wanna be serious
586 / 473 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
17.05.2015, 10:17  [ТС] 5
Цитата Сообщение от xEmpire Посмотреть сообщение
Я бы вам порекомендовал поменять учебник. (Липпман | Прата), у первого про c++11 стандарт больше информации.
По STL можно было бы почитать Джосьютиса.
Про многопоточное программирование можно почитать Энтони Уильямса.
К сожалению поменять учебник на данный момент не представляется возможным, ввиду выполнения лабораторных работ по заданиям из практикума учебника. Однако я учту ваш совет при выборе литературы в будущем. Спасибо.
0
17.05.2015, 10:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2015, 10:17
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru