вопрос начинающего по С++ (обьясните, как это работает...)

Модератор: Модераторы разделов

Аватара пользователя
sedition
Сообщения: 556
ОС: Gentoo/MacOSX/Windows Vista

вопрос начинающего по С++

Сообщение sedition »

обьясните, как это работает

1 #include <iostream.h>
2 long asd(int);
3 int main()
4 {
5 int var=5;
6 cout << asd(var) << "\n";
7 return 0;
8 }
9 long asd(int x)
10 {
11 return x*x;
12 }

в книге как-то лихо сменили тему, пару раз перечитал, ответа не нашел.
спасибо
Спасибо!
Спасибо сказали:
Аватара пользователя
Hvzh
Сообщения: 711
Статус: Gone with Linux
ОС: Linux Mint 18.1

Re: вопрос начинающего по С++

Сообщение Hvzh »

1 #include <iostream.h> //хидер для того, чтобы можно было использовать cout

2 long asd(int); //предварительное объявление функции

3 int main() //начало основной функции
4 {
5 int var=5; //задаем переменную var, равную 5
6 cout << asd(var) << "\n"; //и печатаем результат работы функции asd, передавая ей в качестве аргумента var
7 return 0; //возврат в систему
8 }


9 long asd(int x) //реализация функции var (принимает один аргумент типа int и возвращает long)
10 {
11 return x*x; // вычисляем квадрат переданного аргумента и возвращаем результат
12 }
HP 255 G4 A6-6310 + Linux Mint 18.1 + Windoze7 under VmWare + OS X Mavericks under VmWare
Спасибо сказали:
Аватара пользователя
sedition
Сообщения: 556
ОС: Gentoo/MacOSX/Windows Vista

Re: вопрос начинающего по С++

Сообщение sedition »

а для чего в long asd(int);
asd(INT) ?
немного не врубаюсь
Спасибо!
Спасибо сказали:
Аватара пользователя
Hvzh
Сообщения: 711
Статус: Gone with Linux
ОС: Linux Mint 18.1

Re: вопрос начинающего по С++

Сообщение Hvzh »

sedition писал(а):
02.10.2006 17:37
а для чего в long asd(int);
asd(INT) ?
немного не врубаюсь


строка

long asd(int);

является ПРЕДВАРИТЕЛЬНЫМ объявлением функции. Если еще раз посмотреть на код, то видно, что функция asd вызывается в функции main ДО ТОГО, как была реально определена. А int там для того, чтобы компайлер знал количество аргументов в этой функции. Если бы их было несколько, то объява могла выглядеть, как

long asd(int, int, long);

например. Это для случая трех аргументов - двух интов и одного лонга. А вообще без такого предварительного аргумента можно обойтись, если функция определена в тексте программы раньше ее первого вызова из какой-либо другой функции. В Вашем случае это выглядело бы так:

#include <iostream.h>

long asd(int x)
{
return x*x;
}

int main()
{
int var=5;
cout << asd(var) << "\n";
return 0;
}
HP 255 G4 A6-6310 + Linux Mint 18.1 + Windoze7 under VmWare + OS X Mavericks under VmWare
Спасибо сказали:
newguy
Сообщения: 9

Re: вопрос начинающего по С++

Сообщение newguy »

long asd(int); //это прототип функции, здесь указано что функция возвращает тип long int
// и принимает тип int

А вообще что за книгу изучаеш ? Попробуй что-нибудь для новичков, что-бы таких вопросов не задавать - дальше будет сложнее.
Спасибо сказали:
Аватара пользователя
sedition
Сообщения: 556
ОС: Gentoo/MacOSX/Windows Vista

Re: вопрос начинающего по С++

Сообщение sedition »

спасибо, все понял.
книга С.В.Глушаков А.В.Коваль С.В.Смирнов - Язык програмирования С++
кстати книга впринципе ничего
Спасибо!
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: вопрос начинающего по С++

Сообщение serzh-z »

sedition писал(а):
02.10.2006 18:00
книга С.В.Глушаков А.В.Коваль С.В.Смирнов - Язык програмирования С++
кстати книга впринципе ничего
Увы, увы,.. как-то так сложилось, что среди русскоязычных книжных авторов от программирования вообще нет никого (подобных той же "банде четырех" и множеству других), кого стоило бы читать. <_<
Спасибо сказали:
newguy
Сообщения: 9

Re: вопрос начинающего по С++

Сообщение newguy »

Никогда такой не видел. Для меня лучшей книгой для начала была "C++ за 21 день" Локвуда. :D Вроде название как С++ для чайников, но описано там все по-человечески, после прочтения непоняток нет.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: вопрос начинающего по С++

Сообщение serzh-z »

newguy писал(а):
02.10.2006 18:15
Никогда такой не видел.
Сорри, имел в виду авторов - Гамма, Хелма, Джонсона и Влиссидеса.
Спасибо сказали:
Аватара пользователя
d_Sun
Сообщения: 291

Re: вопрос начинающего по С++

Сообщение d_Sun »

sedition писал(а):
02.10.2006 18:00
спасибо, все понял.
книга С.В.Глушаков А.В.Коваль С.В.Смирнов - Язык програмирования С++
кстати книга впринципе ничего


:) С.В. Смирнов мой тим лидер :D. Вы, кстати, не из Харькова? Да и книга, мягко говоря, так себе :)
Моя подпись сильно длинная :)
Спасибо сказали:
kiedd
Сообщения: 9
ОС: ASPLinux 11

Re: вопрос начинающего по С++

Сообщение kiedd »

Неплохая книга по C++ - Thinking in C++, автор Bruce Eckel. На русском языке доступна как Философия C++.
Спасибо сказали:
Аватара пользователя
d_Sun
Сообщения: 291

Re: вопрос начинающего по С++

Сообщение d_Sun »

kiedd писал(а):
02.10.2006 20:15
Неплохая книга по C++ - Thinking in C++, автор Bruce Eckel. На русском языке доступна как Философия C++.


Вот это действительно стоящая книга!
Моя подпись сильно длинная :)
Спасибо сказали:
Аватара пользователя
Hvzh
Сообщения: 711
Статус: Gone with Linux
ОС: Linux Mint 18.1

Re: вопрос начинающего по С++

Сообщение Hvzh »

d_Sun писал(а):
02.10.2006 20:59
kiedd писал(а):
02.10.2006 20:15

Неплохая книга по C++ - Thinking in C++, автор Bruce Eckel. На русском языке доступна как Философия C++.


Вот это действительно стоящая книга!

Ну ты и дал пример! Она же отнюдь не для новичков, которые int от long отличить не могут!
HP 255 G4 A6-6310 + Linux Mint 18.1 + Windoze7 under VmWare + OS X Mavericks under VmWare
Спасибо сказали:
Аватара пользователя
sedition
Сообщения: 556
ОС: Gentoo/MacOSX/Windows Vista

Re: вопрос начинающего по С++

Сообщение sedition »

d_Sun писал(а):
02.10.2006 19:20
Вы, кстати, не из Харькова?

Не, я из Новокузнецка
Спасибо!
Спасибо сказали: