Приведите пожалуйста примеры программы где есть объявление функции, определение функции (если это не одно и тоже) , и вызов функции. с понятными и подробными коментариями, ЧТОБ Я РАЗОБРАЛАСЬ ЧТО ЕСТЬ ЧТО (где формальные параметры, где фактические и как они передаются, и т. д.) .
Варианты передачи параметров по адресу и по ссылке, ЧТОБ Я ВИДЕЛА РАЗНИЦУ.
Варианты с переменным количеством параметров.
Я подчёркиваю - С ПОНЯТНЫМИ И ПОДРОБНЫМИ КОМЕНТАРИЯМИ.
Огромное спасибо.
Другие языки программирования и технологии
Функции в С++ .50 ОЧКОВ за лучший и полный ответ.
про формальные и фактические параметры спрашивай у своего преподавтаеля! Что он там под этим подразумевает? Такого определения с языке С++ нет! И вообще такого понятия, как параметры функции в С++ нет. Есть только одно понятие - агрументы функции.
// объявление функции
int Test1(int param);
Пишется в заголовочных файлах (*.h). Определяет имя функции, тип возвращаемого значения, количество и тип агрументов
// определение функции
int Test1(int param)
{
// Здесь что то делается
....
return result;
}
Собственно сам код этой функции или реализация. Пишется в файлах *.cpp.
// в a передается значение переменной
viod Func1(int a)
{
// С a можешь делать все что хочешь, переменная, значение которой сюда передано не измениться
a ++;
printf("Func1, a = % d\n", a);
}
// в a передается указатель на пременную (её адрес)
viod Func2(int *a)
{
// оператор * разыменовывает указатель, т. е. получаешь объект, на который он указывает
// Модифицируется переменная на которую указывает указатель
(*a)++;
printf("Func2, *a = % d\n", *a);
}
// в a передается ссылка на пременную (тоже её адрес)
viod Func3(int &a)
{
// все операции производятся над объектом, на который ссылается a
a ++;
printf("Func3, a = % d\n", a);
}
int main()
{
int i = 0;
int j = 0;
int k = 0;
printf("main, i = % d, j = % d, k = % d", i, j, k);
// значение i копируется в а
Func1(i);
// адрес (указатель) j копируется в а
Func2(&j);
// адрес (ссылка) k копируется в а
Func3(k);
printf("main, i = % d, j = % d, k = % d", i, j, k);
}
PS: купи книжку, больше пользы будет. И компилятор какой нибудь найди и попробуй написать что нибудь.
// объявление функции
int Test1(int param);
Пишется в заголовочных файлах (*.h). Определяет имя функции, тип возвращаемого значения, количество и тип агрументов
// определение функции
int Test1(int param)
{
// Здесь что то делается
....
return result;
}
Собственно сам код этой функции или реализация. Пишется в файлах *.cpp.
// в a передается значение переменной
viod Func1(int a)
{
// С a можешь делать все что хочешь, переменная, значение которой сюда передано не измениться
a ++;
printf("Func1, a = % d\n", a);
}
// в a передается указатель на пременную (её адрес)
viod Func2(int *a)
{
// оператор * разыменовывает указатель, т. е. получаешь объект, на который он указывает
// Модифицируется переменная на которую указывает указатель
(*a)++;
printf("Func2, *a = % d\n", *a);
}
// в a передается ссылка на пременную (тоже её адрес)
viod Func3(int &a)
{
// все операции производятся над объектом, на который ссылается a
a ++;
printf("Func3, a = % d\n", a);
}
int main()
{
int i = 0;
int j = 0;
int k = 0;
printf("main, i = % d, j = % d, k = % d", i, j, k);
// значение i копируется в а
Func1(i);
// адрес (указатель) j копируется в а
Func2(&j);
// адрес (ссылка) k копируется в а
Func3(k);
printf("main, i = % d, j = % d, k = % d", i, j, k);
}
PS: купи книжку, больше пользы будет. И компилятор какой нибудь найди и попробуй написать что нибудь.
Вам уже раза 4 все это написали с подробными комментариями. Мне пятый раз писать лень, поэтому дам ссылку на написанное до меня: http://www.intuit.ru/department/pl/cpp/5/
Как говорится, читать отсюда и до обеда.
Как говорится, читать отсюда и до обеда.
#include<iostream>
int testMethod(char*, int&, int);
int main(void)
{
char* a = new char(5);
strcpy(a, "test");
int b;
int c;
testMethod(a, b, c);
delete test;
}
int testMethod(char* a, int& b, int c)
{
a++;
b++;
c++;
};
1. Первый раз где ты видишь testMethod - это обьявление функции.
2. Второй раз - определение.
3. a - передача по адрессу
b - по ссылке
int testMethod(char*, int&, int);
int main(void)
{
char* a = new char(5);
strcpy(a, "test");
int b;
int c;
testMethod(a, b, c);
delete test;
}
int testMethod(char* a, int& b, int c)
{
a++;
b++;
c++;
};
1. Первый раз где ты видишь testMethod - это обьявление функции.
2. Второй раз - определение.
3. a - передача по адрессу
b - по ссылке
Похожие вопросы
- Вопросы про функции. За лучший и полный ответ 50 баллов
- Несколько вопросов про синтаксиз С++ .За отличный и полный ответ 50 баллов.
- Для чего служит операция xor в ассемблере. Буду очень признательна за полный ответ или ссылку.
- Лентяи задают тут вопросы, зачем вы даете полные ответы? Нужно помогать, а не давать готовые решения. Или я не прав?
- C++ Везде написано, что sizeof() с массивом в качестве аргумента возвращает полный размер. А в данной функции не так.
- Вопрос для тех кто знает точный ответ, язык C про функции все подробности вопроса внутри...
- простейшая программа которая будет выводить ответ функций умножения в C#
- Turbo Pascal. 2 задачи на процедуры и функции
- Вопрос про возвращаемое значение из функции в С++.
- Помогите з функциями в с++ плиииз