淺談C語言中函式的使用
函式的定義
定義一個函式需要三個部分:
1.函式的返回值型別
2.函式的名稱
3.函式的引數
函式的宣告和呼叫
宣告的意思是告訴編譯器,這個函式的返回值型別、函式名和引數。我們在呼叫一個函式時,需要向這個函式傳其需要的引數,在函式呼叫時都會建立一個棧幀,通俗的講棧幀就是一塊空間,這塊用來存函式呼叫中需要的一些值,比如區域性變數,引數…,因此,在不同的函式中可以定義同名的變數。
在圖中main函式和IsLeapYear的棧幀中,雖然都有定義一個year的變數,並且兩個year的值是一樣的,但是它們的地址是不一樣的。
函式呼叫的二分查詢
int binarySearch(int* a, int n, int x)
{
int left = 0, right = x;
while (left <= right)
{
int mid = (left + right) / 2;
if (a[mid] == n)
{
return mid;
}
if (a[mid] > n)
{
right = mid - 1;
}
if (a[mid] < n)
{
left = mid + 1;
}
}
return -1;
}
int main()
{
int a[] = { 1, 4, 7, 9, 10 };
int x = sizeof(a) / sizeof(int);
int n;
int mid;
scanf("%d", &n);
if (binarySearch(a, n, x) == -1)
{
printf("找不到\n");
}
else
{
printf("找到了!\n");
}
return 0;
}
函式的前置宣告
編譯器呼叫函式和變數時,只會向上查詢,如果非要在下面定義一個函式,可以採用前置宣告,同時一個函式的結果可以是另一個函式的值。
void AddOne(int* pnum);
int main()
{
int num = 0;
AddOne(&num);
printf("%d\n", num);
return 0;
}
//每呼叫一次函式加一
void AddOne(int* pnum)
{
*pnum += 1;
}
相關文章
- 淺析C語言中的setjmp與longjmp函式C語言函式
- C 語言中的 time 函式函式
- C語言中的abort函式C語言函式
- C語言中qsort函式的用法C語言函式
- C語言中函式printf()和函式scanf()的用法C語言函式
- C語言中函式的返回值C語言函式
- C語言中的 static變數、static函式C語言變數函式
- linux下C語言中的mkdir函式與rmdir函式LinuxC語言函式
- C語言中使用系統自帶的快排函式C語言函式
- 詳細對比C語言中的chmod()函式和fchmod()函式C語言函式
- C語言中變參函式傳參探究C語言函式
- C語言中庫函式呼叫幾例(轉)C語言函式
- c語言中通過函式指標實現函式過載C語言函式指標
- C語言中資料型別轉換函式C語言資料型別函式
- C 語言中返回字串函式的四種實現方法字串函式
- 淺談C#的函式建立和閉包C#函式
- 淺談Swift中的函式式Swift函式
- 淺談eval函式函式
- 淺談生成函式函式
- 淺談尤拉函式函式
- C語言巨集和函式淺析C語言函式
- C語言有關函式淺析C語言函式
- dart系列之:dart語言中的函式Dart函式
- 細談C語言中的main返回值 .C語言AI
- 使用Java委託實現面向函式式語言中的map/filterJava函式Filter
- C語言qsort函式的使用C語言函式
- C語言中取地址符&做函式形參?—— 引用的討論C語言函式
- C語言中關於時間的函式函式
- 淺談Kotlin中的函式Kotlin函式
- 淺談javascript的函式節流JavaScript函式
- 淺談API函式呼叫的方法API函式
- 解決vscode c語言中scanf函式的輸入問題VSCodeC語言函式
- C語言中抽象函式與具體實現的命名與組織C語言抽象函式
- R語言中的迴圈函式(Grouping Function)R語言函式Function
- 談談C++中的swap函式C++函式
- 淺談php count()函式方法PHP函式
- 淺談javascript函式節流JavaScript函式
- 函式指標淺談 (轉)函式指標