С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/41: Рейтинг темы: голосов - 41, средняя оценка - 4.95
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
1

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

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

Author24 — интернет-сервис помощи студентам
Здравствуйте. Я изучаю С++ по книжкам, по видео и прочим заметкам в интернете. Уже где-то дней 7 учу. С++ первый язык который изучаю. Сейчас читаю
Название книги: Освой самостоятельно C++ за 24 часа, 4-е издание
Автор: Либерти, Джесс, Хорват, Дэвид
Кстати хорошая книга, советую начинающим.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2012, 15:03
Ответы с готовыми решениями:

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

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

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

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

115
Croessmah
29.11.2012, 17:05     Изучаю C++ иногда бывает непонятно
  #81

Не по теме:

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

0
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
29.11.2012, 17:09 82
Цитата Сообщение от 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  [ТС] 83
День прошёл не зря)))
Всё таки выяснили как надо)
0
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
29.11.2012, 18:33  [ТС] 84
Нашёл как использовать вызов функции без параметров. К сожалению, там не показан вариант совсем без параметров, но думаю можно сделать совсем без параметров. Как сделать без параметров и без прототипа ещё не нашёл))

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  [ТС] 85
Результат

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 86
Это цитата из книги
Такие споры решаются просто - ссылкой на стандарт. А там четко сказано, что в C++ default-int отсутствует.
0
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
30.11.2012, 08:17  [ТС] 87
Где этот стандарт находится? Есть ли он на русском языке?
0
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
30.11.2012, 08:26 88
Цитата Сообщение от 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
Неэпический
18108 / 10695 / 2062
Регистрация: 27.09.2012
Сообщений: 26,928
Записей в блоге: 1
30.11.2012, 08:30 89
Цитата Сообщение от koderman Посмотреть сообщение
Где этот стандарт находится? Есть ли он на русском языке?
http://alenacpp.blogspot.ru/2011/10/iso-c11.html
1
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
30.11.2012, 08:35  [ТС] 90
Ага, понял, там хорошо объяснена эта тема. Но не указано как можно комбиниробать эти аргументы по умолчанию. Например если я хочу только первый элемент сделать по умолчанию, то придётся все элементы вместе с ним сделать такими же. Допустим если параметров больше трёх. Или например надо только 4ый, 8ой, 10ый и 12ый сделать такими. Придётся вместе с ними ещё параметры перед этими числами делать по умолчанию. Гибкость программы исчезает.
1
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
30.11.2012, 08:42 91
Цитата Сообщение от koderman Посмотреть сообщение
Придётся вместе с ними ещё параметры перед этими числами делать по умолчанию.
Ну да, параметры со значениями по умолчанию должны находиться справа от обычных параметров.

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

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 98
Так вообще нельзя, разделитель - точка. В остальном - кто мешает тебе проверить самому? :-)
0
2 / 2 / 0
Регистрация: 27.11.2012
Сообщений: 131
30.11.2012, 11:23  [ТС] 99
foo1(int a, int b = 1.432, int c = 0.25);
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
30.11.2012, 11:25 100
Целочисленной переменной присваиваем значение с плавающей точкой? Круто.
1
30.11.2012, 11:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2012, 11:25
Помогаю со студенческими работами здесь

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

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

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

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

Компьютер зависает, иногда с полоской по монитору, иногда с синим экраном.
У меня такая штука с компом: включаешь компьютер, можешь подолгу за ним сидеть: играть, смотреть...

Вылетают игры на новом процессоре. Иногда с ошибкой, а иногда в BSOD
Здравствуйте. Поставил значит я себе новый процессор. Сменил свой старенький AMD FX4100 на...


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

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