❶ 在c語言中函數包括哪些部分
包括返回值,函數名,形參列表和函數體四個部分。
例如 :
int findmin(int a[],int n){
//函數體
return min;
}
以上函數int 是返回值,findmin是函數名, int a[] int n是形參列表
❷ C語言函數定義和說明的格式
C語言的函數定義格式是:
函數類型 函數名稱 ( 參數列表 )
{
//函數體
}
函數聲明,不是說明的格式是「函數定義格式」的第一行,然後加 「;」,即:
函數類型 函數名稱 ( 參數列表 );
特別地,在函數聲明中的參數列表中,不需要給出具體的變數名稱,但必須給出每個變數的類型。
❸ c語言main函數的位置是什麼
C語言中main函數可以在任意位置。
每一個C語言程序有且只有一個主函數(main()),且程序必須從main()函數開始,它是程序開始時調用的第一個函數。函數定義形式:【int main(void){}】。
C語言規定,在一個C程序中,main()函數可以在任意位置。
解析:
每個C程序有且只有一個主函數(main),且程序必須從main()函數開始執行,而且main()函數可以放在程序中的任意位置。
詳細介紹:
在宿主環境中編譯的C程序必須定義一個名為main的函數,這是程序開始時調用的第一個函數。
main()函數的定義有以下兩種形式:
(1)函數沒有參數,返回值為int類型。int main( void ) { /*…*/ }.
(2)函數有兩個參數,類型分別是int和char**,返回值是int類型。int main( int argc, char *argv ) { /*…*/ }.
這兩種定義方式都符合C語言標准。除此之外,許多C的實現版本還支持第三種、非標准語法的定義方式:int main( int argc, char *argv, char *envp ) { /*…*/ }.
函數返回值是int,有3個參數:第一個是int,另外兩個是char**。
❹ 函數聲明與函數定義分別在程序中的什麼位置為什麼
函數,是編程語言中可以獨立運行的一個代碼塊。
在C語言中,程序從main()函數開始運行,其他函數要被main函數調用才可以運行。
在從shell解釋器運行編譯好的可執行程序時,main函數會被shell啟動,開始運行。
C語言的函數在使用時要經過3個步驟:聲明、定義、調用。
函數聲明,就是給出函數的原型,讓程序員知道怎麼給函數傳參數,怎麼接收返回值,讓編譯器知道怎麼進行代碼的類型檢查。main函數的聲明是這樣的:
int main();
它的返回值是int類型,不需要傳參數。
printf()函數的聲明是這樣的:int printf(const char* fmt, ...);
它的返回值是int類型,第一個參數是格式字元串,之後可以跟可變參數。
函數聲明的語法是:
返回值類型 函數名(形參類型0 形參變數0, 形參類型1 形參變數1);
如果有多個形參,就以逗號隔開。每個形參都有類型和變數名,其中形參變數名在聲明時可以省略。最後以分號結尾,結束聲明語句。
如果不想讓人看到函數的源碼,就可以只提供一個聲明和一個編譯後的文件,這樣別人就只能看匯編碼了(笑)。C語言的這個設計,對保護知識產權還是有利的。
函數定義,就是在聲明之後不跟分號,而是以大括弧表示函數體,把函數的具體代碼寫在大括弧內部。
上圖中的main()函數就是定義,printf()函數是聲明。
定義,實現的是函數的內容。函數是不能多次定義的,否則編譯器不知道採用哪個定義的代碼。
但函數可以多次聲明,只要聲明都是一樣的,不互相矛盾。
只要打了兩個大括弧{},就算定義了函數。空實現也是實現,可以先佔住這個位置,以後再填寫具體的函數代碼。即,先給出整個程序的框架來,然後再填寫細節。
在實現了函數之後,必須去調用它,它才會運行。
除了main函數是被shell啟動的,其他函數都要直接或間接被main函數調用。
某一個函數在運行時,實際是存在一條從main函數到它的調用鏈的。
函數調用的語法是:
函數名(實參變數0, 實參變數1);
如果有多個實參,則以逗號隔開。如果要接收函數調用的返回值,可以用一個變數去接收:
返回值變數 = 函數名(實參變數0, 實參變數1);
返回值變數的類型,要與函數的返回值類型一致,(返回值變數)在使用之前要先聲明。
對於有返回值的函數,也可以不接收它的返回值。例如,printf()雖然有個int類型的返回值,用於表示列印了多少個字元,但一般不接收它。
所以C語言的入門代碼都是printf("hello world\n");
而不是int ret = printf("hello world\n");
函數名,在C語言中屬於標志符(identity)。
標志符的命名規則是,以下劃線或大小寫字母開始,之後可以跟數字、字母、下劃線,(但不能跟運算符或其他特殊符號)。
它們在代碼中用於表示變數名、結構體類型名、函數名,或者給goto使用的標號。
基本類型的類型名,都被定義為了關鍵字,不能再用作標志符。
struct S {
int a;
int b;
} s;
S是標志符,表示結構體類型S。
a是標志符,表示結構體的成員變數a。
s是標志符,表示變數s,它的類型是結構體類型S。
函數名,也屬於標志符,所以函數名也要以下劃線或大小寫字母開始,不能是關鍵字、運算符、或其他特殊符號。
0123,這不能做函數名,C語言的以0開始的數字是八進制數字。
0x123,也不能做函數名,以0x開始的數字是16進制的數字。
main,可以做函數名,這是主函數,在整個程序里只能有一個,不能作為普通函數的名字。
__schele,以下劃線開始,可以做函數名。
不過,以兩個下劃線開始的函數,大多是Linux系統或C庫的函數。普通函數最好別這么命名。
char,這不能做函數名,它是字元類型的關鍵字。
+,這也不能,它是表示加法的運算符。
CreateWindowEx,這可以做函數名,一看就是典型的匈牙利風格,微軟的代碼(笑)。這個函數是windows系統上創建窗口的API。
匈牙利風格的代碼,是從微軟開始流行的一種風格,函數名以一個或多個英文單詞命名,每個單詞的首字母大寫,其他字母小寫。
不過Linux的代碼(包括第三方的軟體),還是保持上古C代碼的那種下劃線風格,全部字母小寫,單詞之間以下劃線分割,而且多使用縮寫。
有時候,縮寫之後只剩下幾個字母,就直接新組一個詞當函數名了。
例如,Linux上啟動新程序的函數execve(),就是個縮寫的單詞。
執行的英文單詞叫execute,windows上的可執行程序叫exe文件,就是這個詞的前3個字母,Linux也選了這三個字母。
cve這三個字母,來自完整的main函數的參數列表:
int main(int argc, char* argv[], char* envp);
main函數的完整聲明是上面這個樣子的,int main()這個是簡化版的。
其中第一個參數argc,表示要傳給main函數的參數個數。通過命令行參數的形式傳遞。arg是參數argument的縮寫,c就是count,即參數個數。
argv,是(傳給main函數的)參數字元串的數組,v指的是vector。
envp,是環境變數的路徑,environment path。
所以,啟動main的系統調用就叫作execve()了,而不叫StartProgram()。
雖然後者明顯容易理解,但它字母多啊,系統調用的API哪能讓人一眼就看出來是啟動進程的呢(汗)。
回到開頭,main()函數在Linux上就是被execve()這個API啟動的,然後其他函數要被main函數直接或間接調用。
不被main函數(直接或間接)調用的函數,並不會運行。
上圖的代碼只會列印add,因為main只調用了add()函數,沒有調用sub()函數。
這段簡單的代碼,只有這三個函數,sub()沒有被調用。
❺ C語言中函數的定義格式是什麼,函數原型聲明的語法格式
函數定義就是規定函數的格式與功能。
函數聲明就是在函數調用之前進行的一種說明。
下面舉例說明兩者的語法格式:
#include<stdio.h>
intfun(inta,intb);//函數的聲明
voidmain()
{
intx=1,y=2;
intc;
c=fun(x+y);
}
//下面的fun函數就是函數的定義
intfun(inta,intb)
{
returna+b;
}
註:如果被調函數(上例中為fun函數)寫在調用處之前,可以不聲明(本例是現在調用處(c = fun(x+y);)之後)。
❻ C語言中函數名怎樣定義
函數名就是一個標識符,以字母或_(下劃線)開始,後接任意數量的字母或數字或_(下劃線)的組合。
因此,A不行,不能包含—,C不行,不能以數字開始,D不行,不能有$符號。
答案是B。
❼ c語言中自定義函數能否放在main函數後面
可以放在main()函數後面,需要在mian()函數前面做個函數申明。
在一個源文件中定義函數且在另一個文件中調用函數時,函數聲明是必需的。在這種情況下,應該在調用函數的文件頂部聲明函數。如:
#include <stdio.h>
/* 函數聲明 */
int max(int num1, int num2);
int main (){......
函數聲明會告訴編譯器函數名稱及如何調用函數。函數的實際主體可以單獨定義。
函數聲明包括以下幾個部分:
return_type function_name( parameter list );
(7)函數名在c語言程序中寫哪擴展閱讀:
C語言書寫規則:
1、一個說明或一個語句佔一行。
2、用{} 括起來的部分,通常表示了程序的某一層次結構。{}一般與該結構語句的第一個字母對齊,並單獨佔一行。
3、低一層次的語句或說明可比高一層次的語句或說明縮進若干格後書寫。以便看起來更加清晰,增加程序的可讀性。在編程時應力求遵循這些規則,以養成良好的編程風格。
網路-函數