Титла: Структура на функция Публикувано от: Apache в Oct 15, 2005, 19:24 Здравейте. опитвам с еда програмирам на C. Имам един въпрос свързан с функциите. Програмата е следната :
тук дава грешка. грешка в структурата. а тук:
върви правилно. Излиза че извикващата функция трябва да е след извиканата. Но в учебника който ползвам не пише че е така. Някой да знае как е всъщност, и дали имам грешки в конструкцията? Титла: Структура на функция Публикувано от: the_real_maniac в Oct 15, 2005, 21:43 1-во книгата ,която ползваш е стара или по-точно не е по ANSI C или може би по правилно не е по съвременния С.
Защо , защото ползваш старата декларация на функции новата и съвременна е:
func не може да е тип void - по "правилник" де ![]() функ. винаги трябва да връза резултат. има го на доста места подробно обяснено. Коя книга ползваш ? 2-ро На моменти малко се бъркам с дефиниране и деклариране, мисля че прваилното е обяснение е следнот. т.е знам как стоят нещата, но не съм сигурен ,ч е ще мога да го обясня правилно. Значи в С имаш два вариант , когато искаш да ползваш функции. Или (1) те се декларират преди функцията , която ги използва -> най-често всички твой функции са преди main(), т.е main() е последната; или (2) функциите се дефинират и могат да се декларират където си поискаш преди или след функцията , която ги ползва. Как се дефинира функция. твойта функция:
забележи ; накрая ! функциите се дефинират в началото на кода. или да го кажа така след хедърните файлове и преди main() а декларацията, където си поискаш, но щом си дефинирал значи след main(). поне така знам аз , че е редно , а и е логично ![]() Твоя пример:
вместо шльокавица ползвай английски , хем си подобряваш английския, хем е разбираемо и за теб и за всеки програмист - щото програмист без английски трудно , не че няма много ресури на руски или немски примерно , но ![]() ясно ти е. успех ... бтв: conio.h - е дос. хедърен файл , така че си мисля ,че темата ти няма общо с linux-bg.org , освен ако не разработваш open source проект ![]() Титла: Структура на функция Публикувано от: Apache в Oct 16, 2005, 00:46 Мерси много, уча по една жълта книга на C на "Издателство Техника" на Д. Богданов и И.Мустакеров.
Имам още 1 книга по ANSI, но предпочитам първо да хвана основите защото тя е за по-напреднали..
Само не разбрах кога може да се използва първия и кога втория. От какво зависи. Както и да е, мерси за изчерпателния отговор. Колкото за conio.h, използвам я за getch(); ,за да не се затваря програмата веднага, а да чака да въведа символ. Титла: Структура на функция Публикувано от: Gesha123 в Oct 16, 2005, 16:57 Относно първия въпрос наистина общия вид на дифиниране на функция е този
return_type name_of_func(type a,type b..) { return x; // } като това дали ще се използват прототипи на функциите или не зависи изцяло от програмиста или по друг начин #include <iostream.h> #include <conio.h> int func(int a,int ![]() { return a+b;// } main() { cout<<"a="; int a; cin>>a; cout<<"b="; int b; cin>>b; cout<<"a+b="<<func(a,b); getch(); } но ако дифинирането на func е след главната функция т.е main() тогава е необходимо да декларираш func преди main() или : #include <iostream.h> #include <conio.h> int func(int,int); //prototip na func main() { cout<<"a="; int a; cin>>a; cout<<"b="; int b; cin>>b; cout<<"a+b="<<func(a,b); getch(); } int func(int a,int ![]() { return a+b;// } Титла: Структура на функция Публикувано от: 57r1k3 в Oct 16, 2005, 18:29
Имаш малка неточност- декларацията е обявяването за съществуването на функцията: int foo(); а дефиницията е реализацията на функцията: int foo() { /*************************** some code goes here ****************************/ } Успех! Титла: Структура на функция Публикувано от: the_real_maniac в Oct 27, 2005, 09:46 От както написа отговора си 57r1k3 исках да напиша отговор, но нямах време и айде утре , и взех че забравих за темата
![]() Та ще се опитам да кажа как виждам аз нещата: декларирам - обявявам нещо (обявявам , че имам Х) дефинирам - обяснявам нещото какво е (Х е 10) хъх , ами да ... ![]() Все ги бъркам ![]() 57r1k3 Благодаря за поправката/информацията ! |