前言🙌? ?哈嘍!😄各位的uu們,我是你的博客好友小夢,希望我的文章可以給您帶來一定的幫助,話不多說,文章推上!歡迎大家在評論區(qū)嘮嗑指正,覺得好的話別忘了一鍵三連哦!😘
1. 函數(shù)是什么??? ? 哈嘍各位友友們😊,我今天又學(xué)到了很多有趣的知識,現(xiàn)在迫不及待的想和大家分享一下!😘我僅已此文,手把手帶領(lǐng)大家學(xué)習(xí)C語言中函數(shù)模塊的相關(guān)知識!都是精華內(nèi)容,可不要錯過喲?。。?#x1f60d;😍😍
2、C語言中函數(shù)的分類🙌
- 在計算機科學(xué)中,子程序(英語:Subroutine, procedure, function, routine, method,
subprogram, callable unit),是一個大型程序中的某部分代碼, 由一個或多個語句塊組
成。它負責(zé)完成某項特定任務(wù),而且相較于其他代 碼,具備相對的獨立性。- 一般會有輸入?yún)?shù)并有返回值,提供對過程的封裝和細節(jié)的隱藏。這些代碼通常被集成為軟
件庫。
庫函數(shù)存在的原因:
1、 我們知道在我們學(xué)習(xí)C語言編程的時候,總是在一個代碼編寫完成之后迫不及待的想知道結(jié)果,想
把這個結(jié)果打印到我們的屏幕上看看。這個時候我們會頻繁的使用一個功能:將信息按照一定的格
式打印到屏幕上(printf)。
2、 在編程的過程中我們會頻繁的做一些字符串的拷貝工作(strcpy)。
3、在編程是我們也計算,總是會計算n的k次方這樣的運算(pow)。
像上面我們描述的基礎(chǔ)功能,它們不是業(yè)務(wù)性的代碼。我們在開發(fā)的過程中每個程序員都可能用的到,
為了支持可移植性和提高程序的效率,所以C語言的基礎(chǔ)庫中提供了一系列類似的庫函數(shù),方便程序員進行軟件開發(fā)。
簡單的總結(jié),C語言常用的庫函數(shù)都有:
這里通過幾個例子來輔助大家更好的理解函數(shù)如何用 ?? 1、實現(xiàn)一個函數(shù)來交換兩個整數(shù)的內(nèi)容。🙌如果庫函數(shù)能干所有的事情,那還要程序員干什么?所以更加重要的是自定義函數(shù)。自定義函數(shù)和庫函數(shù)一樣,有函數(shù)名,返回值類型和函數(shù)參數(shù)。但是不一樣的是這些都是我們自己來設(shè)計。這給程序員一個很大的發(fā)揮空間。
解題代碼: 😍
void Swap(int * px,int * py)
{int temp = *px;
*px = *py;
*py = temp;
}
int main()
{int x = 0;
int y = 0;
scanf("%d%d", &x, &y);
printf("交換前x = %d, y = %d\n", x, y);
Swap(&x, &y);
printf("交換后x = %d, y = %d\n", x, y);
return 0;
}
2、寫一個函數(shù)可以找出兩個整數(shù)中的大值。🙌解題代碼: 😍
int get_max(int x, int y)
{return (x >y) ? (x) : (y);
}
int main()
{int num1 = 10;
int num2 = 20;
int max = get_max(num1, num2);
printf("max = %d\n", max);
return 0;
}
3、函數(shù)的參數(shù)🙌
實際參數(shù)(實參)💞形式參數(shù)(形參)💞真實傳給函數(shù)的參數(shù),叫實參。實參可以是:常量、變量、表達式、函數(shù)等。無論實參是何種類型的量,在進行函數(shù)調(diào)用時,它們都必須有確定的值,以便把這些值傳送給形參。
形式參數(shù)是指函數(shù)名后括號中的變量,因為形式參數(shù)只有在函數(shù)被調(diào)用的過程中才實例化(分配內(nèi)存單元),所以叫形式參數(shù)。形式參數(shù)當(dāng)函數(shù)調(diào)用完成之后就自動銷毀了。因此形式參數(shù)只在函數(shù)中有效。
通過概念性的講解,可能大家對于函數(shù)形參和實參之間的關(guān)系還是不夠理解,這里舉個例子來幫助大家理解形參和實參的關(guān)系
例子源碼:😍
#define _CRT_SECURE_NO_WARNINGS 1
#includevoid Swap(int px,int py)
{int temp = px;
px = py;
py = temp;
}
int main()
{int x = 0;
int y = 0;
scanf("%d%d", &x, &y);
printf("交換前x = %d, y = %d\n", x, y);
Swap(x, y);
printf("交換后x = %d, y = %d\n", x, y);
return 0;
}
畫圖分析: 😍
程序運行結(jié)果圖: 😍
總結(jié)一下: Swap函數(shù)在調(diào)用的時候, px , py 擁有自己的空間,同時擁有了和實參一模一樣的內(nèi)容。所以我們可以簡單的認為:形參實例化之后其實相當(dāng)于實參的一份臨時拷貝。
傳址調(diào)用💞函數(shù)的形參和實參分別占有不同內(nèi)存塊,對形參的修改不會影響實參。
綜合練習(xí):💞
- 傳址調(diào)用是把函數(shù)外部創(chuàng)建變量的內(nèi)存地址傳遞給函數(shù)參數(shù)的一種調(diào)用函數(shù)的方式。
- 這種傳參方式可以讓函數(shù)和函數(shù)外邊的變量建立起真正的聯(lián)系,也就是函數(shù)內(nèi)部可以直接操作函數(shù)外部的變量。
通過前面知識點的講解,大家再做做以下幾道練習(xí)題??梢韵葏⒖嘉业拇a,然后嘗試自己寫出來。
1、 寫一個函數(shù)可以判斷一個數(shù)是不是素數(shù)。🙌#define _CRT_SECURE_NO_WARNINGS 1//使用的是VS編譯器才需要用到此句代碼
#include#includeint IsPrime(int i)
{for (int j = 2; j<= sqrt(i); j++)
{if (i % j == 0)
{ return 0;
}
}
return i;
}
int main()
{//是素數(shù)返回1,不是素數(shù)返回0;
int num = 0;
for (int i = 101; i< 200; i += 2)
{if (num = IsPrime(i))
{ printf("%d ", num);
}
}
return 0;
}
2、 寫一個函數(shù)判斷一年是不是閏年。🙌#define _CRT_SECURE_NO_WARNINGS 1//使用的是VS編譯器才需要用到此句代碼
#includeint is_leap_year(int y)
{return ((y % 4 == 0) &&( y % 100 != 0 )) || (y % 400 == 0);
}
int main()
{int y = 0;
for (y = 1000; y<= 2000; y++)
{//判斷y是否為閏年
//如果是閏年返回1
//不是閏年返回0
if (is_leap_year(y))
{ printf("%d ", y);
}
}
return 0;
}
3、 寫一個函數(shù),實現(xiàn)一個整形有序數(shù)組的二分查找。🙌#define _CRT_SECURE_NO_WARNINGS 1//使用的是VS編譯器才需要用到此句代碼
#includeint binary_search(int arr[], int k , int sz)
{int left = 0;
int right = sz - 1;
while (left<=right)
{int mid = left + (right - left) / 2;
if (arr[mid]< k)
{ left = mid + 1;
}
else if (arr[mid] >k)
{ right = mid - 1;
}
else
{ return mid;
}
}
return -1;
}
int main()
{int arr[10] = {1,2,3,4,5,6,7,8,9,10 };
int k = 0;
scanf("%d", &k);
int sz = sizeof(arr) / sizeof(arr[0]);
//找到了就返回下標(biāo),找不到就返回-1
int ret = binary_search(arr, k, sz);
if (ret == -1)
printf("找不到\n");
else
printf("找到了,下標(biāo)是:%d\n", ret);
return 0;
}
4、 寫一個函數(shù),每調(diào)用一次這個函數(shù),就會將 num 的值增加1。🙌#define _CRT_SECURE_NO_WARNINGS 1//使用的是VS編譯器才需要用到此句代碼
#includevoid Add(int* p)
{(*p)++;
}
int main()
{int num = 0;
Add(&num);
printf("%d\n", num);
Add(&num);
printf("%d\n", num);
Add(&num);
printf("%d\n", num);
return 0;
}
總結(jié)撒花💞? ?本篇文章旨在帶領(lǐng)大家學(xué)習(xí)C語言函數(shù)模塊的相關(guān)知識。這里講解的只是函數(shù)模塊的上半部分知識點,關(guān)于下半部分的知識講解我明天整理好再通過博客的形式分享給大家。欲知后事如何,請聽下回講解!如果我寫的有什么的不好之處,請在文章下方給出你寶貴的意見😊。如果覺得我寫的好的話請點個贊贊和關(guān)注哦~😘
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁標(biāo)題:你是真的“C”——詳解C語言函數(shù)模塊知識(上篇)-創(chuàng)新互聯(lián)
本文鏈接:http://www.ekvhdxd.cn/article42/dgheec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、用戶體驗、定制網(wǎng)站、微信公眾號、網(wǎng)站內(nèi)鏈、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)