先舉個例子:
成都創(chuàng)新互聯(lián)是一家專業(yè)的成都網站建設公司,我們專注網站設計制作、成都網站設計、網絡營銷、企業(yè)網站建設,外鏈,廣告投放為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網理念。從網站結構的規(guī)劃UI設計到用戶體驗提高,創(chuàng)新互聯(lián)力求做到盡善盡美。
#include stdio.h
int max(int,int); //這是函數max的申明,最后要加分號
int main()
{
int a=1,b=2,c;
c = max(a,b); //這是函數max的使用
printf("%d",c);
return 0;
}
int max(int n,int m) //這是函數max的定義部分,最后不加分號
{
if (nm)
return n;
else
return m;
}
不能在函數體內定義函數是什么意思?
【就是說函數在程序中不能嵌套定義,這個和Pascal語言不同,例如上面程序中,max函數不能定義在main函數中間】
定義是聲明還是使用?
【定義既不是申明,也不是使用,函數具體功能的實現代碼叫做函數的定義,如上面程序最后7行就是定義】
函數不是應該先聲明在使用嗎?
【是的,但如果函數定義在函數使用之前,就可以不用申明(如下面程序)。函數定義在函數使用后的情況下(如上面程序),先聲明,能使編譯器在編譯在編譯過程中能夠識別使用的函數】
#include stdio.h
int max(int n,int m) //這是函數max的定義部分,最后不加分號
{
if (nm)
return n;
else
return m;
}
int main()
{
int a=1,b=2,c;
c = max(a,b); //這是函數max的使用
printf("%d",c);
return 0;
}
定義如何解釋?
【見第二個問題】
c語言定義函數是一段可以重復使用的代碼,用來獨立地完成某個功能,它可以接收用戶傳遞的數據,也可以不接收。
接收用戶數據的函數在定義時要指明參數,不接收用戶數據的不需要指明,根據這一點可以將函數分為有參函數和無參函數。
函數就是一段封裝好的,可以重復使用的代碼,它使得我們的程序更加模塊化,不需要編寫大量重復的代碼。函數可以提前保存起來,并給它起一個獨一無二的名字,只要知道它的名字就能使用這段代碼。
C語言特點及運用范圍:
C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用于底層開發(fā)。C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環(huán)境支持便能運行的高效率程序設計語言。它既具有高級語言的特點,又具有匯編語言的特點。
C語言特點:簡潔的語言、具有結構化的控制語句、豐富的數據類型、豐富的運算符、可對物理地址進行直接操作、代碼具有較好的可移植性、可生成高質量、目標代碼執(zhí)行效率高的程序。
C語言是一門面向過程的計算機編程語言,C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言。C語言描述問題比匯編語言迅速、工作量小、可讀性好、易于調試、修改和移植,而代碼質量與匯編語言相當。
1、返回值是int,還有,你的指針概念不明確,這里稍微跟你講一下,具體詳細的還是看一下書吧
例如有如下定義:int * p;int a = 10;表示定義了一個int型的指針變量p和一個int型的變量a,并且a的值為10,使用時,要給p賦值,并且賦值應該是一個地址,即p = a;現在p的值就是a的地址,所以p就相當于a了,取出a的值就相當于取出p指向地址的值,所以*p就表示10這個值。
2、這里涉及到了強制類型轉換,因為在fun2里的return 用了(int)把a+b的結果強制轉化成了int型變量,例如:double a = 1.6; 執(zhí)行了(int)a;之后,a的值就為1了,小數部分被省略。
3、fun(32,32)正確,而fun("abchina",32.0)不正確,在函數的形參里面定義的是一個char型和一個float型變量,而“abchina”是一個字符串,與函數中變量類型不同。
可以,聲明函數時可以不需要形參名稱,只要形參類型。
注意這叫函數聲明,不叫定義。在大括號中給出函數具體實現的才叫函數定義。定義函數時形參名不能省略。
將代碼段封裝成函數的過程叫做函數定義。
函數可以重復使用的代碼,用來獨立地完成某個功能,它可以接收用戶傳遞的數據,也可以不接收。接收用戶數據的函數在定義時要指明參數,不接收用戶數據的不需要指明,根據這一點可以將函數分為有參函數和無參函數。
相關概念:
函數不能嵌套定義,main 也是一個函數定義,所以要將 sum 放在 main 外面。函數必須先定義后使用,所以 sum 要放在 main 前面。
函數定義時給出的參數稱為形式參數,簡稱形參;函數調用時給出的參數(也就是傳遞的數據)稱為實際參數,簡稱實參。函數調用時,將實參的值傳遞給形參,相當于一次賦值操作。
原則上講,實參的類型和數目要與形參保持一致。如果能夠進行自動類型轉換,或者進行了強制類型轉換,那么實參類型也可以不同于形參類型,例如將 int 類型的實參傳遞給 float 類型的形參就會發(fā)生自動類型轉換。
函數是用戶與程序的接口,在定義一個函數前,首先要清楚以下三個問題。1) 函數的功能實現及算法選擇。算法選擇會在后續(xù)文章詳細講解,本節(jié)重點關注函數的功能實現。一般選取能體現函數功能的函數名,且見名知意,如求和函數的函數名可取為 add,求最大值的函數名可取為 max,排序函數可取名為 sort 等。2) 需要用戶傳給該函數哪些參數、什么類型,即函數參數。3) 函數執(zhí)行完后返回給調用者的參數及類型,即函數返回值類型。 函教定義格式 函數定義的一般格式為: 返回類型 函數名 (類型參數1,類型參數2,…) {函數體 }也可以不含參數,不含參數時,參數表中可寫關鍵字 void 或省略,為規(guī)范起見,教程中對沒有參數的函數,參數表中統(tǒng)一寫 void。例如: 類型 函數名 () {函數體 }等價于: 類型 函數名 (void) //建議的書寫方式 {函數體 } 如果該函數沒有返回類型,則為 void 類型。例如: void add (int x,int y) {printf ("sum=%d\n", x+y); } 除了 void 類型外,在函數體中,均需要顯式使用 return 語句返回對應的表達式的值。 函教返回值 函數的值是指調用函數結束時,執(zhí)行函數體所得并返回給主調函數的值。 關于函數返回值說明如下。1) 帶返回值的函數,其值一般使用 return 語句返回給調用者。其格式為: return 表達式;或者 return (表達式);例如: int add (int a, int b) {return (a + b); //return 后為表達式 } 函數可以含一個或多個 return 語句,但每次調用時只能執(zhí)行其中一個 return 語句。例如,求整數絕對值的函數: int f (int n) //含多個return語句,但每次調用只執(zhí)行一個 {if (n = 0)return n;elsereturn -n; }