目錄
提到函式,我們最先想到的肯定是數學中的函式,那麼c語言中的函式究竟是什麼呢?接下來帶大家看一下吧!
維基百科中對函程式設計客棧數的定義:子程式
在電腦科學中,子程式(英語:subroutine, procedure, function, routine, method, subprogram, callable unit),是乙個大型程式中的某部分**, 由乙個或多個語句塊組 成。它負責完成某項特定任務,而且相較於其他代 碼,具備相對的獨立性。 一般會有輸入引數並有返回值,提供對過程的封裝和細節的隱藏。這些**通常被集成為軟 件庫。
2.1.1 為什麼要有庫函式
1. 我們知道在我們學習c語言程式設計的時候,總是在乙個**編寫完成之後迫不及待的想知道結果,想把這個結果列印到我們的螢幕上看看。這個時候我們會頻繁的使用乙個功能:將資訊按照一定的格 式列印到螢幕上(printf)。
2. 在程式設計的過程中我們會頻繁的做一些字串的拷貝工作(strcpy)。
3. 在程式設計是我們也計算,總是會計算n的k次方這樣的運算(pow)。
像上面我們描述的基礎功能,它們不是業務性的**。我們在開發的過程中每個程式設計師都可能用的到, 為了支援可移植性和提高程式的效率,所以c語言的基礎庫中提供了一系列類似的庫函式,方便程式設計師進行軟體開發。
2.1.2什麼是庫函式
那麼什麼是庫函式呢?舉個簡單的例子,庫函式就是c語言本身給我們已經定義好的函式,作為程式設計師我們可以直接使用,就像printf()和scanf()。
注意:使用庫函式必須包含標頭檔案,例如我們使用printf()與scanf()時要引用stdio.h標頭檔案,即我們通常寫的#include
2.1.3 主函式只能是main()嗎
很多小夥伴就疑惑了,那麼主函式是什麼呢?主函式為什麼叫main函式呢?我們必須使用main()函式嗎?接下來給大家解除這個疑惑!
首先給大家乙個結論,c語言中預設main作為主函式的名字,但是主函式的名字卻不一定一定是main(),實際上,我們可以自己進行設定主函式的名字的,c語言中提供了#pragma comment()可以自己設定主函式的名字,有興趣的小夥伴可以自己去嘗試,在這個地方像喲啊告訴大家,作為程式的入口主函式的名字不一定必須是main(),希望大家可以記住這個!至於主函式為什麼叫main()函式,這本身就是c語言預設的,如果硬要強行解釋一波的話,main()的英文意識 就是主要的意思。
2.1.4常見的庫函式
這個地方不會展開去講,後期用到的時候具體講解。
2.2.1自定義函式是什麼
自定義函式就是程式設計師自己定義用於首先特定功能的函式!比如我們要完成兩個數的相加我們定義的add()函式就屬於自定義函式。
2.2.2為什麼要有自定義函式
自定義函式和庫函式一樣,有函式名,返回值型別和函式引數。
但是不一樣的是這些都是我們自己來設計。這給程式設計師乙個很大的發揮空間。
2.2.3函式的組成
ret_type fun_name(para1, *)
ret_type 返回型別
fun_name 函式名
para1 函式引數
2.2.4 舉例展示
(1)寫乙個函式可以找出兩個整數中的最大值。
#include
//get_max函式的設計
int get_max(int x, int y)
int main()
這個地方給大家解釋一下三目運算子,即上面的(x>y)?(x):(y),這個地方表示的是,如果x>y成立,就返回x的值,反之就返回y的值,這樣就達到了求最大值的目的!
(2)寫乙個函式求兩個數的和
#include
//get_add函式的設計
int get_add(int x, int y)
int main()
真實傳給函式的引數,叫實參。 實參可以是:常量、程式設計客棧變數、表示式、函式等。
注意:為什麼可以是函式呢?因為有的函式是由返回值的,所以自然也就能充當實參。
無論實參是何種型別的量,在進行函式呼叫時,它們都必須有確定的值,以便把這些值傳送給形 參。
形式引數是指函式名後括號中的變數,因為形式引數只有在函式被呼叫的過程中才例項化(分配內 存單 元),所以叫形式引數。形式引數當函式呼叫完成之後就自動銷毀了。因此形式引數只在函式中有效。
為什麼這樣說呢?接下來給大家舉個例子吧!
例如我們要交換兩個變數的值:
#include
void swap(int x, int y)
int main()
下面是**的執行結果:
很明顯,並沒有達成交換的目的,這就證明了:形式引數當函式呼叫完成之後就自動銷毀了,即我們把num1和num2傳給x和y之後,雖然我們在函式例將xwww.cppcns.com和y交換了,但是由於x和y在swap函式呼叫完成後就銷毀了,即並沒有真正實現num1和num2的交換。
所以我們可以簡單的認為:形參例項化之後其實相當於實參的乙份臨時拷貝。
函式的形參和實參分別占有不同記憶體塊,對形參的修改不會影響實參。我們上述的交換的例子就是傳值呼叫,即並不能真正達成交換兩個變數的值的目的!
傳址呼叫是把函式外部建立變數的記憶體位址傳遞給函式引數的一種呼叫函式的方式。
這種傳參方式可以讓函式和函式外邊的變數建立起真正的聯絡,也就是函式內部可以直接操 作函式外部的變數。
同樣,我們就以前面的交換兩個變數的值的例子來給大家進行舉例!
#include
void swap(int *x, int *y)
int main()
這個地方為什麼會發生這種情況呢?等後期我們學到指標的那一節的時候將會具體講解!
4.3.1. 寫乙個函式判斷一年是不是閏年。
#include
int is_leap_year(int year)
else }
int main()
else
return 0;
}4.3.2.寫乙個函式可以判斷乙個數是不是素數。
#include
#include
int is_prime_num(int n)
} return 1;
}int main()
else
continue;
}return 0;
}4.3.3寫乙個函式,實現乙個整形有序陣列的二分查詢。
#include
int find_num(int arr, int size,int k)
else if (arr[mid] > k)
else
}if (left > right) }
int main()
; int k = 7;
int size = 0;
size = sizeof(arr) / sizeof(arr[0]);
int ret = 0;
ret = find_num(arr, size,k);
if (-www.cppcns.com1 == ret)
else
return 0;
}
python基礎教程之自定義函式介紹
函式最重要的目的是方便我們重複使用相同的一段程式。將一些操作隸屬於乙個函式,以後你想實現相同的操作的時候,只用呼叫函式名就可以,而不需要重複敲所有的語句。函式的定義 首先,我們要定義乙個函式,以說明這個函式的功能。複製 如下 def square sum a,b c a 2 b 2 return c...
C語言 自定義函式
c語言 關於自定義函式 return type function name datetype arg datetype arg2 函式三要素 函式返回值 函式名 引數列表 例子呀 自定義函式的完整寫法 include 函式原型 int sum int,int 可以只寫型別,引數名稱可省略 int m...
自定義指令函式傳參
vue 2.6.6 繫結函式傳參 傳參多個多樣 引數動態變化 1.採用傳物件方式 binding.value 測試 const mydirective export default mydirective以上解決了問題1.繫結函式傳參,對於問題2.傳參多個多樣可以給args乙個物件,或者用陣列 測試...