c語言第七章函數(shù)ppt c語言函數(shù)視頻講解

c語言 請問這個PPT的意思是不是說這樣用函數(shù)交換最終數(shù)組還是不會變的,為什么不變?

是的。這個PPT就是為了說明用void swap2(int x, int y)交換不了通過形參傳入的元素。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比墊江網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式墊江網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋墊江地區(qū)。費用合理售后完善,十載實體公司更值得信賴。

為什么交換不了?

因為void swap2(int x, int y)的形式參數(shù)是傳值模式。

C/C++語言規(guī)定:以傳值模式調(diào)用函數(shù),在調(diào)用過程中,函數(shù)需先將形參做一個拷貝,然后基于新的拷貝進行計算。

如上例,執(zhí)行調(diào)用swap2(a[0],a[1]),swap2會先將a[0]的值拷貝給x,將a[1]的值拷貝給y,然后在函數(shù)體內(nèi)交換x、y的值,這樣對a[0]、a[1]毫無影響。

怎樣通過函數(shù)調(diào)用交換a[0]、a[1]的值?

答案是:通過傳引用調(diào)用,即將函數(shù)聲明為void swap2(int x, int y)。

C++語言規(guī)定:引用可以看作是變量的別名。別名類似于人的小名之類,一個人大名、小名雖不同,但都指的是這個人。

同樣如上例,執(zhí)行調(diào)用swap2(a[0],a[1]),swap2將x視作a[0]的別名、將y視作a[1]的別名,這樣在函數(shù)體內(nèi)交換x、y的值,實際上交換的是a[0]、a[1]的值。

引用是C++語言引入的特性,C語言中沒有引用。若要用C語言實現(xiàn)通過函數(shù)交換a[0]、a[1]的值,怎么辦?

答案是:模擬傳引用調(diào)用,即將函數(shù)聲明為void swap2(int* xp, int* yp)。

模擬傳引用調(diào)用本質(zhì)上仍是傳值調(diào)用,只不過傳入函數(shù)的是原始參數(shù)的地址。

同樣如上例,執(zhí)行調(diào)用swap2(a+0,a+1),a+0是a[0]的地址,a+1是a[1]的地址。相應地,swap將a[0]的地址值拷貝一份給xp,將a[1]的地址值拷貝一份給yp。函數(shù)體內(nèi),swap2通過xp、yp即a[0]、a[1]的地址的新拷貝,操縱a[0]、a[1]的值。

這種方式除了需要改造swap2的聲明,還需改造swap2的函數(shù)體,即其實現(xiàn)。

c語言如何定義函數(shù)

函數(shù)是用戶與程序的接口,在定義一個函數(shù)前,首先要清楚以下三個問題。1) 函數(shù)的功能實現(xiàn)及算法選擇。算法選擇會在后續(xù)文章詳細講解,本節(jié)重點關注函數(shù)的功能實現(xiàn)。一般選取能體現(xiàn)函數(shù)功能的函數(shù)名,且見名知意,如求和函數(shù)的函數(shù)名可取為 add,求最大值的函數(shù)名可取為 max,排序函數(shù)可取名為 sort 等。2) 需要用戶傳給該函數(shù)哪些參數(shù)、什么類型,即函數(shù)參數(shù)。3) 函數(shù)執(zhí)行完后返回給調(diào)用者的參數(shù)及類型,即函數(shù)返回值類型。 函教定義格式 函數(shù)定義的一般格式為: 返回類型 函數(shù)名 (類型參數(shù)1,類型參數(shù)2,…) {函數(shù)體 }也可以不含參數(shù),不含參數(shù)時,參數(shù)表中可寫關鍵字 void 或省略,為規(guī)范起見,教程中對沒有參數(shù)的函數(shù),參數(shù)表中統(tǒng)一寫 void。例如: 類型 函數(shù)名 () {函數(shù)體 }等價于: 類型 函數(shù)名 (void) //建議的書寫方式 {函數(shù)體 } 如果該函數(shù)沒有返回類型,則為 void 類型。例如: void add (int x,int y) {printf ("sum=%d\n", x+y); } 除了 void 類型外,在函數(shù)體中,均需要顯式使用 return 語句返回對應的表達式的值。 函教返回值 函數(shù)的值是指調(diào)用函數(shù)結束時,執(zhí)行函數(shù)體所得并返回給主調(diào)函數(shù)的值。 關于函數(shù)返回值說明如下。1) 帶返回值的函數(shù),其值一般使用 return 語句返回給調(diào)用者。其格式為: return 表達式;或者 return (表達式);例如: int add (int a, int b) {return (a + b); //return 后為表達式 } 函數(shù)可以含一個或多個 return 語句,但每次調(diào)用時只能執(zhí)行其中一個 return 語句。例如,求整數(shù)絕對值的函數(shù): int f (int n) //含多個return語句,但每次調(diào)用只執(zhí)行一個 {if (n = 0)return n;elsereturn -n; }

譚浩強版C語言問題(第七章:函數(shù)、變量、存儲)

.前言:

? ? 寫在前面,由于我大一學過java多以對于本書的前幾張沒有什么記錄。那是因為他和java的數(shù)據(jù)類型、循環(huán)結構、 數(shù)組、函數(shù) 之類的這一些都差不太多。前面稍微重要的就是函數(shù)了和java稍有不一致,個人覺得沒有必要再寫了,所以我從函數(shù)開始寫起。學習C語言就要學習他的精華。譬如: 指針、自定義數(shù)據(jù)類型、文件。

漢諾塔問題

2.字符串問題 : C中沒有字符串類型,只有字符數(shù)組

例如: char? asd[] = {"hellow "}?

使用scanf輸入的時候不用取地址賦值,直接使用字符數(shù)組名字即可,因為他們在內(nèi)存中的地址是連續(xù)的

字符串的幾個函數(shù)“#include string.h”.puts? ? gets、strlen、strcmp、strcat

3.數(shù)組在實參和形參中的傳遞問題

數(shù)組元素的傳遞 a[45]、將數(shù)組名放在形參是把該數(shù)組的首地址傳遞,操作形參就是操作實參

4.二維數(shù)組中的列必須有大小,相對的二維數(shù)組中的一維的大小可以沒有,系統(tǒng)會自動分配。(學習完指針后會有更明確的理解)

5.變量問題

P232

6.內(nèi)部函數(shù)和外部函數(shù)

C語言編程…用遞歸函數(shù)編寫下列程序,按下面PPT的思路來

#include?stdio.h

#include?math.h

double?mysqrt(double?a,?double?x0)

{

if?(a0)return?-1;

double?x1?=?1.0?/?2?*?(x0?+?a?/?x0);

if?(fabs(x1?-?x0)??1e-5)return?x1;

return?mysqrt(a,?x1);

}

int?main()

{

double?a,?x0?=?1.0;

printf("Enter?a:");

scanf("%lf",?a);

printf("The?sqrt?of?%lf=%lf\n",?a,?mysqrt(a,?x0));

return?0;

}

文章標題:c語言第七章函數(shù)ppt c語言函數(shù)視頻講解
文章網(wǎng)址:http://muchs.cn/article44/ddieeee.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設計公司動態(tài)網(wǎng)站、企業(yè)建站網(wǎng)站制作、做網(wǎng)站、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化