国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

史上最強C語言教程----函數(shù)(1)

A Loity / 1890人閱讀

摘要:無論實參是何種類型的量,在進行函數(shù)調(diào)用時,它們都必須有確定的值,以便把這些值傳送給形參。形式參數(shù)當(dāng)函數(shù)調(diào)用完成之后就自動銷毀了。函數(shù)的調(diào)用傳值調(diào)用函數(shù)的形參和實參分別占有不同內(nèi)存塊,對形參的修改不會影響實參。沒有找到找到了下標(biāo)為

目錄

1.? 函數(shù)是什么?

2.??C語言中函數(shù)的分類:

2.1?庫函數(shù)

2.1.1 為什么要有庫函數(shù)

2.1.2?什么是庫函數(shù)

2.1.3 主函數(shù)只能是main()嗎

2.1.4常見的庫函數(shù)

2.2 自定義函數(shù)

2.2.1自定義函數(shù)是什么

2.2.2為什么要有自定義函數(shù)

2.2.3函數(shù)的組成

2.2.4 舉例展示

3. 函數(shù)的參數(shù)

3.1 實際參數(shù)(實參)

3.2? 形式參數(shù)(形參)

4. 函數(shù)的調(diào)用

4.1 傳值調(diào)用

4.2??傳址調(diào)用

4.3 練習(xí)

4.3.1. 寫一個函數(shù)判斷一年是不是閏年。

4.3.2.寫一個函數(shù)可以判斷一個數(shù)是不是素數(shù)。

4.3.3??寫一個函數(shù),實現(xiàn)一個整形有序數(shù)組的二分查找。


1.? 函數(shù)是什么?

提到函數(shù),我們最先想到的肯定是數(shù)學(xué)中的函數(shù),那么C語言中的函數(shù)究竟是什么呢?接下來帶大家看一下吧!

維基百科中對函數(shù)的定義:子程序

在計算機科學(xué)中,子程序(英語:Subroutine, procedure, function, routine, method, subprogram, callable unit),是一個大型程序中的某部分代碼, 由一個或多個語句塊組 成。它負責(zé)完成某項特定任務(wù),而且相較于其他代 碼,具備相對的獨立性。 一般會有輸入?yún)?shù)并有返回值,提供對過程的封裝和細節(jié)的隱藏。這些代碼通常被集成為軟 件庫。

2.??C語言中函數(shù)的分類:

2.1?庫函數(shù)

2.1.1 為什么要有庫函數(shù)

1. 我們知道在我們學(xué)習(xí)C語言編程的時候,總是在一個代碼編寫完成之后迫不及待的想知道結(jié)果,想把這個結(jié)果打印到我們的屏幕上看看。這個時候我們會頻繁的使用一個功能:將信息按照一定的格 式打印到屏幕上(printf)。

2. 在編程的過程中我們會頻繁的做一些字符串的拷貝工作(strcpy)。

3. 在編程是我們也計算,總是會計算n的k次方這樣的運算(pow)。

像上面我們描述的基礎(chǔ)功能,它們不是業(yè)務(wù)性的代碼。我們在開發(fā)的過程中每個程序員都可能用的到, 為了支持可移植性和提高程序的效率,所以C語言的基礎(chǔ)庫中提供了一系列類似的庫函數(shù),方便程序員進行軟件開發(fā)。

2.1.2?什么是庫函數(shù)

那么什么是庫函數(shù)呢?舉個簡單的例子,庫函數(shù)就是C語言本身給我們已經(jīng)定義好的函數(shù),作為程序員我們可以直接使用,就像printf()和scanf()。

注意使用庫函數(shù)必須包含頭文件,例如我們使用printf()與scanf()時要引用stdio.h頭文件,即我們通常寫的#include

2.1.3 主函數(shù)只能是main()嗎

很多小伙伴就疑惑了,那么主函數(shù)是什么呢?主函數(shù)為什么叫main函數(shù)呢?我們必須使用main()函數(shù)嗎?接下來給大家解除這個疑惑!

首先給大家一個結(jié)論,C語言中默認main作為主函數(shù)的名字,但是主函數(shù)的名字卻不一定一定是main(),實際上,我們可以自己進行設(shè)定主函數(shù)的名字的,C語言中提供了#pragma comment()可以自己設(shè)定主函數(shù)的名字,有興趣的小伙伴可以自己去嘗試,在這個地方像喲啊告訴大家,作為程序的入口主函數(shù)的名字不一定必須是main(),希望大家可以記住這個!至于主函數(shù)為什么叫main()函數(shù),這本身就是C語言默認的,如果硬要強行解釋一波的話,main()的英文意識 就是主要的意思。

2.1.4常見的庫函數(shù)

IO函數(shù)

字符串操作函數(shù)

字符操作函數(shù)

內(nèi)存操作函數(shù)

時間/日期函數(shù)

數(shù)學(xué)函數(shù)

其他庫函數(shù)

這個地方不會展開去講,后期用到的時候具體講解。

2.2 自定義函數(shù)

2.2.1自定義函數(shù)是什么

自定義函數(shù)就是程序員自己定義用于首先特定功能的函數(shù)!比如我們要完成兩個數(shù)的相加我們定義的add()函數(shù)就屬于自定義函數(shù)。

2.2.2為什么要有自定義函數(shù)

自定義函數(shù)和庫函數(shù)一樣,有函數(shù)名,返回值類型和函數(shù)參數(shù)。

但是不一樣的是這些都是我們自己來設(shè)計。這給程序員一個很大的發(fā)揮空間。

2.2.3函數(shù)的組成

ret_type fun_name(para1, *){	statement;//語句項}ret_type 返回類型fun_name 函數(shù)名para1    函數(shù)參數(shù)

2.2.4 舉例展示

(1)寫一個函數(shù)可以找出兩個整數(shù)中的最大值。

#include //get_max函數(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;}

這個地方給大家解釋一下三目運算符,即上面的(x>y)?(x):(y),這個地方表示的是,如果x>y成立,就返回x的值,反之就返回y的值,這樣就達到了求最大值的目的!

(2)寫一個函數(shù)求兩個數(shù)的和

#include //get_add函數(shù)的設(shè)計int get_add(int x, int y){	return (x + y);}int main(){	int num1 = 10;	int num2 = 20;	int sum = get_add(num1, num2);	printf("sum = %d/n", sum);	return 0;}

3. 函數(shù)的參數(shù)

3.1 實際參數(shù)(實參)

真實傳給函數(shù)的參數(shù),叫實參。 實參可以是:常量、變量、表達式、函數(shù)等。

注意:為什么可以是函數(shù)呢?因為有的函數(shù)是由返回值的,所以自然也就能充當(dāng)實參。

無論實參是何種類型的量,在進行函數(shù)調(diào)用時,它們都必須有確定的值,以便把這些值傳送給形 參。

3.2? 形式參數(shù)(形參)

形式參數(shù)是指函數(shù)名后括號中的變量,因為形式參數(shù)只有在函數(shù)被調(diào)用的過程中才實例化(分配內(nèi) 存單 元),所以叫形式參數(shù)。形式參數(shù)當(dāng)函數(shù)調(diào)用完成之后就自動銷毀了。因此形式參數(shù)只在函數(shù)中有效。

為什么這樣說呢?接下來給大家舉個例子吧!

例如我們要交換兩個變量的值:

#include void swap(int x, int y){	int temp = x;	x = y;	y = temp;}int main(){	int num1 = 10;	int num2 = 20;	swap(num1, num2);	printf("num1 = %d/nnum2 = %d", num1,num2);	return 0;}

下面是代碼的運行結(jié)果:

很明顯,并沒有達成交換的目的,這就證明了:形式參數(shù)當(dāng)函數(shù)調(diào)用完成之后就自動銷毀了,即我們把num1和num2傳給x和y之后,雖然我們在函數(shù)例將x和y交換了,但是由于x和y在swap函數(shù)調(diào)用完成后就銷毀了,即并沒有真正實現(xiàn)num1和num2的交換。

所以我們可以簡單的認為:形參實例化之后其實相當(dāng)于實參的一份臨時拷貝。

4. 函數(shù)的調(diào)用

4.1 傳值調(diào)用

函數(shù)的形參和實參分別占有不同內(nèi)存塊,對形參的修改不會影響實參。我們上述的交換的例子就是傳值調(diào)用,即并不能真正達成交換兩個變量的值的目的!

4.2??傳址調(diào)用

傳址調(diào)用是把函數(shù)外部創(chuàng)建變量的內(nèi)存地址傳遞給函數(shù)參數(shù)的一種調(diào)用函數(shù)的方式。

這種傳參方式可以讓函數(shù)和函數(shù)外邊的變量建立起真正的聯(lián)系,也就是函數(shù)內(nèi)部可以直接操 作函數(shù)外部的變量。

同樣,我們就以前面的交換兩個變量的值的例子來給大家進行舉例!

#include void swap(int *x, int *y){	int temp = *x;	*x = *y;	*y = temp;}int main(){	int num1 = 10;	int num2 = 20;	swap(&num1, &num2);	printf("num1 = %d/nnum2 = %d", num1,num2);	return 0;}

這個地方為什么會發(fā)生這種情況呢?等后期我們學(xué)到指針的那一節(jié)的時候?qū)唧w講解!

4.3 練習(xí)

4.3.1. 寫一個函數(shù)判斷一年是不是閏年。

#includeint is_leap_year(int year){	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)	{		return 1;	}	else	{		return 0;	}}int main(){	int year = 0;	int flag = 0;	scanf("%d", &year);	flag=is_leap_year(year);	if (1 == flag)	{		printf("是閏年!");	}	else	{		printf("不是閏年!");	}	return 0;}

4.3.2.寫一個函數(shù)可以判斷一個數(shù)是不是素數(shù)。

#include#includeint is_prime_num(int n){	int flag = 0;	int i = 0;	for (i = 2; i <= sqrt(n); i++)	{		if (n % i == 0)		{			return 0;		}	}	return 1;}int main(){	int i = 0;	for (i = 100; i < 200; i++)	{		int flag = 0;		flag=is_prime_num(i);		if (1 == flag)		{			printf("%d ", i);		}		else			continue;			}	return 0;}

4.3.3??寫一個函數(shù),實現(xiàn)一個整形有序數(shù)組的二分查找。

#includeint find_num(int arr[], int size,int k){	int left = 0;	int right = 0;	right = size - 1;	int mid = 0;	while (left <= right)	{		mid = (left + right) / 2;		if (arr[mid] < k)		{			left = mid + 1;		}		else if (arr[mid] > k)		{			right = mid - 1;		}		else		{			return mid;		}	}	if (left > right)	{		return -1;	}}int main(){	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };	int k = 7;	int size = 0;	size = sizeof(arr) / sizeof(arr[0]);	int ret = 0;	ret = find_num(arr, size,k);	if (-1 == ret)	{		printf("沒有找到!");	}	else	{		printf("找到了!下標(biāo)為%d", ret);	}	return 0;}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/123958.html

相關(guān)文章

  • 史上最強C語言教程----分支和循環(huán)(4)

    摘要:表達式表達式為調(diào)整部分,用于循環(huán)條件的調(diào)整。語句的循環(huán)控制變量建議不可在循環(huán)體內(nèi)修改循環(huán)變量,防止循環(huán)失去控制。建議語句的循環(huán)控制變量的取值采用前閉后開區(qū)間寫法。注意當(dāng)條件初始化條件判斷條件更新都省略后,程序?qū)⑦M入死循環(huán)。 目錄 3.2 for循環(huán) 3.2.1?語法 3.2.2 break與...

    lei___ 評論0 收藏0
  • 史上最強C語言教程----分支和循環(huán)(5--終篇)

    摘要:目錄循環(huán)循環(huán)語句的語法語句的語法執(zhí)行流程執(zhí)行流程語句的特點語句的特點循環(huán)中的和循環(huán)中的和練習(xí)練習(xí)計算的階乘。多層循環(huán)這種情況使用是達不到目的的。它只能從最內(nèi)層循環(huán)退出到上一層的循環(huán)。 目錄 3.3 do...while()循環(huán) 3.3.1 do語句的語法: 3.3.2 執(zhí)行流程 3.3.3...

    Reducto 評論0 收藏0
  • 深入淺出 Java 中的包裝類

    摘要:前陣子,我們分享了中的基本數(shù)據(jù)類型轉(zhuǎn)換這篇文章,對許多粉絲還是有帶來幫助的,今天講一下包裝類的的由來,及自動裝箱拆箱的概念和原理。下面是基本數(shù)據(jù)類型與對應(yīng)的包裝類型。 showImg(https://segmentfault.com/img/remote/1460000016537706); 前陣子,我們分享了《Java中的基本數(shù)據(jù)類型轉(zhuǎn)換》這篇文章,對許多粉絲還是有帶來幫助的,今天講...

    ytwman 評論0 收藏0
  • Hystrix 停止開發(fā)。。。Spring Cloud 何去何從?

    摘要:棧長得到消息,停止開發(fā)了。。。是一個輕量級的容錯組件,其靈感來自于,主要為和函數(shù)式編程設(shè)計的看到這里,棧長表示學(xué)不動了。。。上面說了,官方推薦替代的開源組件,這個棧長也沒有用過,查了下,資料也比較稀少。 showImg(https://segmentfault.com/img/remote/1460000017201104?w=1600&h=1066); 棧長得到消息,Hystrix ...

    陸斌 評論0 收藏0
  • 屌炸天,Oracle 發(fā)布了一個全棧虛擬機 GraalVM,支持 Python!

    摘要:前陣子,發(fā)布了一個黑科技,號稱是一個全新的通用全棧虛擬機,并具有高性能跨語言交互等逆天特性,真有這么神奇簡介是一個跨語言的通用虛擬機,不僅支持了等基于的語言,以及等基于的語言,還支持其他像和語言等。原生鏡像加速來看這段代碼,同樣來自官網(wǎng)。 前陣子,Oracle 發(fā)布了一個黑科技 GraalVM,號稱是一個全新的通用全棧虛擬機,并具有高性能、跨語言交互等逆天特性,真有這么神奇? Graa...

    hiYoHoo 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<