_Gleb_ писал(а): ↑28.07.2007 18:53
Ещё вопрос: у Кернигана и Ритчи приводятся такие примеры, как надо пользоваться функциями:
Код: Выделить всё
int my_function(int m, int n)
main() {
/*Чего-то там....*/
}
int my_function(int var1, int var2) {
/*Сама_функция*/
return l;
}
Я не понял: зачем объявлять функцию сразу в двух местах и при том с разными именами аргументов? Это необходимо, или просто так принято? Какой в этом смысл? Или когда сначала пишется, что один из аргументов -- заранее определённая константа, а потом, что этот же аргумент -- переменная такого-то типа. К. и Р. пишут (если я правильно их понял), что первый раз -- это просто так, программе всё равно, что там сказано, но так надо, а вот потом и надо написать, что положено. Это зачем так?
В общем, совсем запутался...
Нет, функция объявляется перед main()'ом, аналогично объявлению переменной, чтобы потом ее можно было вызывать в main()'е, и компилятор понимал, что имеется в виду. А саму функцию поместить после main()'а. Типа, приучаться к структурированному программиолванию.

Но при объявлении функции достаточно просто указать тип аргумента, указывать переменную не надо.
Код: Выделить всё
#include<stdio.h>
void privet(int, int);
int main()
{
int n, m;
scanf("%d", &n);
scanf("%d", &m);
privet(n,m);
return 0;
}
void privet(int nn, int mm)
{
printf("%d Privetov marnyshke i %d privetov sloniku\n", nn, mm);
}
А можно сразу написать тело функции перед main()'ом
Код: Выделить всё
#include<stdio.h>
void privet(int nn, int mm)
{
printf("%d Privetov marnyshke i %d privetov sloniku\n", nn, mm);
}
int main()
{
int n, m;
scanf("%d", &n);
scanf("%d", &m);
privet(n,m);
return 0;
}