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