2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131

Изучаю C++ иногда бывает непонятно

27.11.2012, 15:03. Показов 10098. Ответов 115
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Я изучаю С++ по книжкам, по видео и прочим заметкам в интернете. Уже где-то дней 7 учу. С++ первый язык который изучаю. Сейчас читаю
Название книги: Освой самостоятельно C++ за 24 часа, 4-е издание
Автор: Либерти, Джесс, Хорват, Дэвид
Кстати хорошая книга, советую начинающим.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.11.2012, 15:03
Ответы с готовыми решениями:

Почему иногда отслеживается нажатие на три клавиши сразу, а иногда нет
Доброй ночи, кто может объяснить почему иногда отслеживает нажатие на три кнопки сразу, а иногда нет. И как выйти с ситуации *( P.S. Пишу...

Openssl. Иногда вызов функций шифрования проходит нормально, иногда нет
Всем привет! Использую библиотеку openssl для шифрования / дешифрования. Генерирую ключи следующим образом: RSA...

Ошибка (иногда) Unautorized /Бывает и Forbidden 403 (или 404 - не помню)
Есть код : Dim web As New System.Net.WebClient Dim www As String = web.DownloadString("http://site.com/example.php") ...

115
29.11.2012, 17:05
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
проблем не вызывает при любом размере.
Как быть со сложной рекурсией?

0
 Аватар для Schizorb
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
29.11.2012, 17:09
Цитата Сообщение от koderman Посмотреть сообщение
Но в маленьких программах прототип можно и не применять и это будет хорошим решением.
"Определение вполне можно поместить перед вызовом функции... в таком случае прототип больше не понадобится." - это верно сказано. То есть обе проги ниже корректны:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// прототип
int foo();
 
int main()
{
    int x = foo(); // вызов функции 
}
 
// определение ф-ции
int foo()
{
    return 7;
}
C++
1
2
3
4
5
6
7
8
9
10
// определение ф-ции
int foo()
{
    return 7;
}
 
int main()
{
    int x = foo(); // вызов функции 
}
А вот это уже ошибка:
C++
1
2
3
4
5
6
7
8
9
10
int main()
{
    int x = foo(); // вызов функции 
}
 
// определение ф-ции
int foo()
{
    return 7;
}
Теперь то, что написано в твоем первом вложении: "Функция не обязана иметь параметры, и если она их не имеет, то прототип необязателен". Это не так, неважно есть у ф-ции параметры или нет, она должна иметь прототип или определена до своего вызова.
1
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
29.11.2012, 17:23  [ТС]
День прошёл не зря)))
Всё таки выяснили как надо)
0
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
29.11.2012, 18:33  [ТС]
Нашёл как использовать вызов функции без параметров. К сожалению, там не показан вариант совсем без параметров, но думаю можно сделать совсем без параметров. Как сделать без параметров и без прототипа ещё не нашёл))

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 #include <iostream> 
 
 int AreaCube(int length, int width = 25, int height = 1); 
 
int main () 
 
 {
 
 int length = 100;
 
 int width = 50;
 
 int height = 2;
 
 int area; 
 
 area = AreaCube(length, width, height);
 
 std::cout << "First time area equals " << area << "\n"; 
 
 area = AreaCube(length, width);
 
 std::cout << "Second time area equals " << area << "\n"; 
 
 area = AreaCube(length);
 
 std::cout << "Third time area equals " << area << "\n";  
 
return 0;
 
 } 
 
 int AreaCube(int length, int width, int height) 
 {
 
 return (length * width * height);
 
 }
Миниатюры
Изучаю  C++ иногда бывает непонятно   Изучаю  C++ иногда бывает непонятно  
0
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
29.11.2012, 18:46  [ТС]
Результат

First area equals: 10000 Second time area equals: 5000 Third time area equals: 2500
0
545 / 344 / 12
Регистрация: 05.11.2010
Сообщений: 1,076
Записей в блоге: 1
29.11.2012, 20:39
Это цитата из книги
Такие споры решаются просто - ссылкой на стандарт. А там четко сказано, что в C++ default-int отсутствует.
0
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
30.11.2012, 08:17  [ТС]
Где этот стандарт находится? Есть ли он на русском языке?
0
 Аватар для Schizorb
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
30.11.2012, 08:26
Цитата Сообщение от koderman Посмотреть сообщение
К сожалению, там не показан вариант совсем без параметров, но думаю можно сделать совсем без параметров
Ты понял суть данного примера? И как работают параметры по умолчанию? Если в объявлении функции будут указаны значения по умолчанию для всех параметров, то можно будет вызывать функцию совсем без аргументов. То есть, например, такую функцию:
C++
1
int AreaCube(int length = 10, int width = 25, int height = 1);
Можно будет вызвать просто как
C++
1
AreaCube();
Тогда будут использованы значения по умолчанию 10, 25 и 1. И с помощью
C++
1
return (length * width * height);
Будет возвращен результат, в данном случае, как понимаешь 250.

Добавлено через 44 секунды
Цитата Сообщение от koderman Посмотреть сообщение
Как сделать без параметров и без прототипа ещё не нашёл))
Без прототипа, или без определения функции до ее вызова - никак.
1
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
30.11.2012, 08:30
Цитата Сообщение от koderman Посмотреть сообщение
Где этот стандарт находится? Есть ли он на русском языке?
http://alenacpp.blogspot.ru/2011/10/iso-c11.html
1
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
30.11.2012, 08:35  [ТС]
Ага, понял, там хорошо объяснена эта тема. Но не указано как можно комбиниробать эти аргументы по умолчанию. Например если я хочу только первый элемент сделать по умолчанию, то придётся все элементы вместе с ним сделать такими же. Допустим если параметров больше трёх. Или например надо только 4ый, 8ой, 10ый и 12ый сделать такими. Придётся вместе с ними ещё параметры перед этими числами делать по умолчанию. Гибкость программы исчезает.
1
 Аватар для Schizorb
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
30.11.2012, 08:42
Цитата Сообщение от koderman Посмотреть сообщение
Придётся вместе с ними ещё параметры перед этими числами делать по умолчанию.
Ну да, параметры со значениями по умолчанию должны находиться справа от обычных параметров.

C++
1
2
foo1(int a, int b = 8, int c = 11); // корректно
foo2(int a, int b = 8, int c); // ошибка! надо задать значение для c
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
30.11.2012, 09:27
Цитата Сообщение от koderman Посмотреть сообщение
Гибкость программы исчезает.
Это сугубо Ваше мнение.
0
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
30.11.2012, 09:31  [ТС]
Цитата Сообщение от Герц Посмотреть сообщение
Такие споры решаются просто - ссылкой на стандарт. А там четко сказано, что в C++ default-int отсутствует.
Ошибка "C++ does not support default-int"
Вот оно как оказывается.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
30.11.2012, 09:33
Цитата Сообщение от koderman Посмотреть сообщение
Вот оно как оказывается.
Вам об этом уже не раз писали
0
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
30.11.2012, 09:42  [ТС]
Говорят ещё можно компилятор настроить чтобы он компилировал как С, а у С есть default int
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
30.11.2012, 09:44
Цитата Сообщение от koderman Посмотреть сообщение
компилировал как С
Тогда это будет программа на языке Си, а не на Си++
0
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
30.11.2012, 11:16  [ТС]
Такой вариант возможен?

foo1(int a, int b = 1,432, int c = 0,25);

Тоесть подставлять float параметры? Ведь int в прототипе ставится наверное только для тех чисел которые задаются в программе внутри фигурных скобок?
0
545 / 344 / 12
Регистрация: 05.11.2010
Сообщений: 1,076
Записей в блоге: 1
30.11.2012, 11:20
Так вообще нельзя, разделитель - точка. В остальном - кто мешает тебе проверить самому? :-)
0
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
30.11.2012, 11:23  [ТС]
foo1(int a, int b = 1.432, int c = 0.25);
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
30.11.2012, 11:25
Целочисленной переменной присваиваем значение с плавающей точкой? Круто.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.11.2012, 11:25

При запуске браузера открывается nftds.ru, иногда бывает что по 2 -3 стр одновременно.
При запуске браузера открывается nftds.ru, иногда бывает что по 2 -3 стр одновременно. Такая ситуация у меня уже неделю. Я провела сбор...

Почему в google по неизвестному возрасту иногда бывает существенно выше показов, чем по другим возрастам, при этом очень
Коллеги, может кто знает почему в гугле по неизвестному возрасту иногда бывает существенно выше показов, чем по другим возрастам, при этом...

Синие экраны бывает месяц нету, бывает каждый день
Забадал BSOD

Mozilla бывает открывает вкладку лишнюю, бывает отдельно окно
Браузер Mozilla бывает открывает дополнительную вкладку, хотя я делаю действия совсем даже не направленные на это. Также может...

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


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

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

Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru