在线观看av毛片亚洲_伊人久久大香线蕉成人综合网_一级片黄色视频播放_日韩免费86av网址_亚洲av理论在线电影网_一区二区国产免费高清在线观看视频_亚洲国产精品久久99人人更爽_精品少妇人妻久久免费

首頁 > 文章中心 > c語言函數(shù)

c語言函數(shù)

前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇c語言函數(shù)范文,相信會為您的寫作帶來幫助,發(fā)現(xiàn)更多的寫作思路和靈感。

c語言函數(shù)

c語言函數(shù)范文第1篇

關(guān)鍵詞:函數(shù)指針,指針函數(shù),地址

 

1.引言

一個程序由兩部分組成:代碼部分和數(shù)據(jù)部分。當(dāng)在程序中定義變量時,編譯系統(tǒng)就會為變量分配相應(yīng)的存儲單元,由此就形成了地址的概念。數(shù)據(jù)在內(nèi)存中是存放在某一地址上的,代碼同樣也是存儲在內(nèi)存中的某一地址上,因此指針即可向內(nèi)存中存儲的數(shù)據(jù)也可以指向程序中的代碼,這就是函數(shù)指針。而指針函數(shù)則是指返回值是一個指針的函數(shù)。

2.函數(shù)指針

可以用指針變量指向整型變量、字符串、數(shù)組,也可以指向一個函數(shù)。在C語言中規(guī)定,一個函數(shù)總是占用一段連續(xù)的內(nèi)存區(qū),而函數(shù)名就是該函數(shù)所占內(nèi)存區(qū)的首地址。我們可以把函數(shù)的這個首地址(或稱入口地址)賦給一個指針變量,使該指針變量指向該函數(shù)。然后通過指針變量就可以找到并調(diào)用這個函數(shù)。論文參考網(wǎng)。我們把這種指向函數(shù)的指針變量稱為“函數(shù)指針變量”。

函數(shù)指針變量定義的一般形式為:

類型說明符(*函數(shù)指針變量名)(形式參數(shù)表);

例如: int(*pf)( );

表示pf是一個指向函數(shù)入口地址的指針變量,該函數(shù)的返回值(函數(shù)值)是整型。

下面通過例子來說明用函數(shù)指針形式實現(xiàn)對函數(shù)調(diào)用的方法。在我們沒有學(xué)習(xí)指針變量之前,我們調(diào)用函數(shù)時是通過函數(shù)名來完成的。

2.1用函數(shù)名實現(xiàn)函數(shù)的調(diào)用

源程序代碼如下:

#include<stdio.h>

int max(inta,int b)

{if(a>b)return a;

elsereturn b;}

void main()

{ int max(inta,int b);

int a,b,c;

printf('inputtwo numbers:');

scanf('%d,%d',&a,&b);

c=max(a,b);/*用函數(shù)名調(diào)用*/

printf('max=%d ',c);

}

程序運行結(jié)果如下:

2.2用函數(shù)指針來實現(xiàn)函數(shù)的調(diào)用

源程序代碼:

int max(inta,int b)

{if(a>b) returna;

else return b;}

void main()

{ int max(inta,int b);

int (*pmax)(int ,int ); /*定義了一個指向整型函數(shù)的指針*/

int a,b,c;

pmax=max;/*使函數(shù)指針指向該函數(shù)的入中地址*/

printf('inputtwo numbers:');

scanf('%d,%d',&a,&b);

c=(*pmax)(a,b);/*通過指針調(diào)用max函數(shù)*/

printf('max=%d ',c);}

程序運行結(jié)果如下:

實例說明:

(1) 本實例中“int (*pmax)( int ,int );”用來定義pmax是一個指向函數(shù)的指針,該函數(shù)有兩個整型參數(shù),函數(shù)值為整型。

(2) 賦值語句“pmax=max;”的作用是將函數(shù)max的入口

地賦給指針變量pmax(函數(shù)名代表該函數(shù)的入口地址)。

這時,pmax就是指向函數(shù)max的指針變量,此時pmax

和max都指向函數(shù)的開頭,見右圖。調(diào)用*pmax就是調(diào)

用max。

(3) 請注意:pmax是指向函數(shù)的指針變量,它只能指向函數(shù)

的入口處而不能指向函數(shù)中間的某一條指令處,因此不能

用 *(pmax+1)來表示函數(shù)的下一條指令。

(4) 在main函數(shù)中有一個賦值語句:

c=(*pmax)(a,b);與實例2.1中c=max(a,b);等價。這就是用指

針形式實現(xiàn)函數(shù)的調(diào)用。以上用兩種方法實現(xiàn)函數(shù)的調(diào)用,結(jié)果是一樣的。論文參考網(wǎng)。

2.3使用函數(shù)指針

問題:編寫程序,根據(jù)用戶的選擇分別調(diào)用sin 、cos、 tan函數(shù)計算一個角度的三角函數(shù)值。角度值從鍵盤輸入。

源程序代碼如下:

#include<stdio.h>

#include<math.h>

main()

{double(*p[3])(double)={sin,cos,tan};

intchoice,angle;

printf('Pleaseinput angle=?');

scanf('%d',&angle);

printf('Pleaseinput choice(0-sin,1-cos,2-tan)=?');

scanf('%d',&choice);

printf('%lf ',(*p[choice])(angle*3.14159/180));

}

實例說明:

(1)在本實例中“double (*p[3])(double)={sin,cos,tan};”定義了一個具有3個元素的函數(shù)指針數(shù)組p,其中3個元素分別指向數(shù)學(xué)函數(shù)sin、cos、tan。

(2)當(dāng)程序運行時給angle賦值30,給choice賦值0。則:

程序中“priintf('%lf ',(*p[choice])(angle*3.14159/180));”

轉(zhuǎn)換為:

“printf('%lf ',(*p[0])(30*3.14159/180));”(與“printf('%lf ',sin(30*3.14159/180));”等價)。

程序運行結(jié)果如下:

3. 指針函數(shù)

一個函數(shù)可以返回一個整型值、字符值、實型值等,也可以返回指針型的數(shù)據(jù),即地址。指針函數(shù)則是指返回值是一個指針的函數(shù)。在C語言中允許一個函數(shù)的返回值是一個指針(即地址),這種返回指針值的函數(shù)稱為指針函數(shù)。論文參考網(wǎng)。

定義指針型函數(shù)的一般形式為:

類型說明符 *函數(shù)名(形參表)

{

…… /*函數(shù)體*/

}

如: int *pf(int x,int y)

{

...... /*函數(shù)體*/

}

pf是函數(shù)名,調(diào)用它以后能得到一個指向整型數(shù)據(jù)的指針(地址)。x、y是函數(shù)pf的形參,為整型。請注意在*pf 兩側(cè)沒有括號,在pf的兩側(cè)分別為*運算符和()運算符。而()優(yōu)先級高于*,因此pf先與()結(jié)合。顯然這是一個函數(shù)形式。這個函數(shù)前面有一個*,表示此函數(shù)是指針型函數(shù)(函數(shù)值是指針)。最前面的int表示返回的指針指向整型變量。對C的這種定義形式,用時要十分小心。

例:有若干個學(xué)生的成績(每個學(xué)生有4門課程),要求在用戶輸入學(xué)生序號后,能輸出該學(xué)生的全部成績。

源程序代碼如下:

#include<stdio.h>

void main()

{floatscore[][4]={{60,70,80,90},{56,89,67,88},{34,78,90,66}};

float*search(float(*pointer)[4],int n);

float *p;

int i,m;

printf('inputthe number of student:');

scanf('%d',&m);

printf('Thescores of No.%d are: ',m);

p=search(score,m);

for(i=0;i<4;i++)

printf('%5.2f ',*(p+i));

printf(' ');

}

float*search(float(*pointer)[4],int n)

{float*pt;

pt=*(pointer+n);

return(pt);

}

程序運行結(jié)果如下:

4.結(jié)束語

特別注意的是函數(shù)指針和指針函數(shù)這兩者在寫法和意義上的區(qū)別。如int(*p)()和int *p()是兩個完全不同的量。int(*p)()是一個變量說明,說明p 是一個指向函數(shù)入口的指針變量,該函數(shù)的返回值是整型量,(*p)的兩邊的括號不能少。int *p() 則不是變量說明而是函數(shù)說明,說明p是一個指針型函數(shù),其返回值是一個指向整型量的指針,*p兩邊沒有括號。作為函數(shù)說明, 在括號內(nèi)最好寫入形式參數(shù),這樣便于與變量說明區(qū)別。 對于指針函數(shù)定義,int *p()只是函數(shù)頭部分,一般還應(yīng)該有函數(shù)體部分,這樣才能構(gòu)成一個完整的函數(shù)結(jié)構(gòu)。

參考文獻(xiàn):

[1] 陳強.C語言核心開發(fā)技術(shù)從入門到精通[M].北京:電子工業(yè)出版社,2009.

[2] 匡松.C語言程序設(shè)計[M] .北京:中國鐵道出版社,2008.

[3] 李俊杰.C語言復(fù)習(xí)指南與題解[M] .北京:清華大學(xué)出版社,2003.

[4] 譚浩強.C程序設(shè)計[M] .北京:清華大學(xué)出版社,2005.

c語言函數(shù)范文第2篇

關(guān)鍵詞:C語言;函數(shù)說明;返回值

函數(shù)的一般形式是:type-specifier function_name(parameter list)parameter declarations{body of the function}類型說明符定義了函數(shù)中return語句返回值的類型,該返回值可以是任何有效類型。如果沒有類型說明符出現(xiàn),函數(shù)返回一個整型值。參數(shù)表是一個用逗號分隔的變量表,當(dāng)函數(shù)被調(diào)用時這些變量接收調(diào)用參數(shù)的值。一個函數(shù)可以沒有參數(shù),這時函數(shù)表是空的。但即使沒有參數(shù),括號仍然是必須要有的。參數(shù)說明段定義了其中參數(shù)的類型。當(dāng)一個函數(shù)沒有明確說明類型時,C語言的編譯程序自動將整型(int)作為這個函數(shù)的缺省類型,缺省類型適用于很大一部分函數(shù)。當(dāng)有必要返回其它類型數(shù)據(jù)時,需要分兩步處理:首先,必須給函數(shù)以明確的類型說明符;其次,函數(shù)類型的說明必須處于對它的首次調(diào)用之前。只有這樣,C編譯程序才能為返回非整型的值的函數(shù)生成正確代碼。

一、函數(shù)的類型說明可將函數(shù)說明為返回任何一種合法的C語言數(shù)據(jù)類型

類型說明符告訴編譯程序它返回什么類型的數(shù)據(jù)。這個信息對于程序能否正確運行關(guān)系極大,因為不同的數(shù)據(jù)有不同的長度和內(nèi)部表示。返回非整型數(shù)據(jù)的函數(shù)被使用之前,必須把它的類型向程序的其余部分說明。若不這樣做,C語言的編譯程序就認(rèn)為函數(shù)是返回整型數(shù)據(jù)的函數(shù),調(diào)用點又在函數(shù)類型說明之前,編譯程序就會對調(diào)用生成錯誤代碼。為了防止上述問題的出現(xiàn),必須使用一個特別的說明語句,通知編譯程序這個函數(shù)返回什么值。下例示出了這種方法。

第一個函數(shù)的類型說明sum()函數(shù)返回浮點類型的數(shù)據(jù)。這個說明使編譯程序能夠?qū)um()的調(diào)用產(chǎn)生正確代碼。函數(shù)類型說明語句的一般形式是:type_specifier function_name(;)即使函數(shù)使用形參,也不要將其寫入說明句。若未使用類型說明語句,函數(shù)返回的數(shù)據(jù)類型可能與調(diào)用者所要求的不一致,其結(jié)果是難以預(yù)料的。如果兩者同處于一個文件中,編譯程序可以發(fā)現(xiàn)該錯誤并停止編譯。如果不在同一個文件中,編譯程序無法發(fā)現(xiàn)這種錯誤。類型檢查僅在編譯中進(jìn)行,鏈接和運行時均不檢查。因此,必須十分細(xì)心以確保絕不發(fā)生上述錯誤。當(dāng)被說明為整型的函數(shù)返回字符時,這個字符值被轉(zhuǎn)換為整數(shù)。因為C語言以不加說明的方式進(jìn)行字符型與整型之間的數(shù)據(jù)轉(zhuǎn)換,因而多數(shù)情況下,返回字符值的函數(shù)并不是說明為返回字符值,而是由函數(shù)的這種字符型向整型的缺省類型轉(zhuǎn)換隱含實現(xiàn)的。

二、返回語句

返回語句return有兩個重要用途。第一,它使得內(nèi)含它的那個函數(shù)立即退出,也就是使程序返回到調(diào)用語句處繼續(xù)進(jìn)行。第二,它可以用來回送一個數(shù)值。本章將說明這兩個用途。

(一)從函數(shù)返回函數(shù)可以用兩種方法停止運行并返回到調(diào)用程序

第一種是在執(zhí)行完函數(shù)的最后一個語句之后,從概念上講,是遇到了函數(shù)的結(jié)束符“}”(當(dāng)然這個花括號實際上并不會出現(xiàn)在目標(biāo)碼中,但我們可以這樣理解)。例如,下面的函數(shù)在屏幕上顯示一個字符串。

一旦字串顯示完畢,函數(shù)就沒事可做了,這時它返回到被調(diào)用處。在實際情況中,沒有多少函數(shù)是以這種缺省方式終止運行的。因為有時必須送回一個值,大多數(shù)函數(shù)用return語句終止運行,有時在函數(shù)中設(shè)立了多個終止點以簡化函數(shù)、提高效率。切記,一個函數(shù)可以有多個返回語句。如下所示,函數(shù)在s1、s2相等時返回1,不相等時返回-1。

(二)返回值所有的函數(shù)

c語言函數(shù)范文第3篇

關(guān)鍵詞:傳遞方式;數(shù)據(jù)類型;值傳遞;指針;數(shù)組

中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2012)07-1688-02

The Discussion on Function Parameters Passing in the C Language Teaching

DONG Xin-zheng

(Department of Computer Science and Technology, Zhuhai College of Jilin University, Zhuhai 519041, China)

Abstract:The function parameter-passing modes are usually divided into“value passing”and“address passing”in some textbooks, which brings some difficulty for the beginners to understand. This paper makes a clear distinction between parameter-passing mode and data type, which are two basic concepts related with function parameter passing; analyzes three cases: general data type as function parameters, pointer data type as function parameters and array name as function parameters; gets the summary that“pass-by-value”is the only function parameter-passing mode in C language, the difficulty about data type is to distinct between the pointer data type and non-pointer data type.

Key words:parameter-passing mode; data type; pass-by-value; pointer; array

1概述

函數(shù)是C語言程序的基本構(gòu)成模塊,通過使用函數(shù),不僅可以省去重復(fù)代碼的編寫,還可以使程序更加模塊化,從而有利于程序的閱讀、修改和完善。對于C語言的初學(xué)者來說,準(zhǔn)確理解函數(shù)參數(shù)的傳遞方式是難點之一。一些C語言程序設(shè)計教材[1][2]中把函數(shù)間的參數(shù)傳遞分為“數(shù)值傳遞”和“地址傳遞”兩種方式,這種分類很容易使初學(xué)者混淆概念,更不能抓住參數(shù)傳遞的本質(zhì)。

2傳遞方式和數(shù)據(jù)類型

“值傳遞”[3]是函數(shù)參數(shù)的唯一傳遞方式。函數(shù)的參數(shù)分為實際參數(shù)(簡稱實參)和形式參數(shù)(簡稱形參),在定義函數(shù)時使用的參數(shù)叫形參,在調(diào)用函數(shù)時使用的參數(shù)叫實參。實參可以是常量、變量或表達(dá)式,但要求它們有確定的值。實參與形參的結(jié)合只有一種方式,即“值傳遞”,把實參的值賦給形參變量。“值傳遞”具有單向性,只能把實參傳給形參,而不能由形參回傳給實參。

不同數(shù)據(jù)類型的函數(shù)參數(shù)對主調(diào)函數(shù)中變量的作用有所不同。函數(shù)參數(shù)可取的數(shù)據(jù)類型為基本類型、構(gòu)造類型、指針類型或空類型,如圖1[3]所示。空類型表示該函數(shù)為無參函數(shù),在此不作介紹。其余數(shù)據(jù)類型又可分為三類:普通類型,包括基本類型、結(jié)構(gòu)體類型和共用體類型;指針類型;數(shù)組類型。函數(shù)參數(shù)為普通類型時,對函數(shù)的調(diào)用不用影響到主調(diào)函數(shù)中變量的值;函數(shù)參數(shù)為指針類型或數(shù)組類型時,對函數(shù)的調(diào)用可以修改主調(diào)函數(shù)中有關(guān)變量的值。

圖1

3普通類型變量作為函數(shù)參數(shù)

普通變量作為函數(shù)參數(shù)時,對形參的修改不會影響到實參。如下例所示,通過“值傳遞”,形參x保存了實參a的值,形參y保存了實參b的值,因為形參和實參是相互獨立的不同變量,所以在swap函數(shù)中對形參x和y進(jìn)行的交換不會反映到實參a和b中。

#include

void swap(int x, int y)

{

int temp;

temp=x; x=y; y=temp;

}

void main()

{

int a, b;

scanf("%d%d", &a, &b);

swap(a, b);

printf("%d %d\n", a, b);

}

輸入:1 2

輸出:1 2

4指針作為函數(shù)參數(shù)

變量的指針就是變量的地址,存放變量地址的變量叫指針變量,定義指針變量的一般形式為:

基類型*指針變量名;

通過指針變量訪問其所指向的變量的方式稱為間接訪問方式。如下例所示。

int age;

a=10; //直接訪問方式

int* p=&a;

*p=11; //間接訪問方式

指針類型作為函數(shù)參數(shù)時,參數(shù)傳遞方式仍然是“值傳遞”,即把實參的值傳遞給形參。不同的是參數(shù)為指針變量,可以通過形參的間接訪問方式來讀取或修改主調(diào)函數(shù)中有關(guān)變量的值。

如下例所示,通過“值傳遞”,形參x保存了變量a的地址,形參y保存了變量b的地址,即x指向變量a,y指向變量b,在swap函數(shù)中通過間接訪問方式交換了變量a和b的值。

#include

void swap(int* x, int* y)

{

int temp;

temp=*x; *x=*y; *y=temp;

}

void main()

{

int a, b;

scanf("%d%d", &a, &b);

swap(&a, &b);

printf("%d %d\n", a, b);

}

輸入:1 2

輸出:2 1

5數(shù)組名作為函數(shù)參數(shù)

數(shù)組元素和數(shù)組名也可以作為函數(shù)參數(shù),數(shù)組元素作為函數(shù)參數(shù)與普通變量用法相同,數(shù)組名作為函數(shù)參數(shù)與指針變量相同。

用數(shù)組名作函數(shù)形參時,指定數(shù)組大小是不起任何作用的。因為C語言編譯對形參數(shù)組大小不做檢查,只是將實參數(shù)組的首地址傳遞給形參數(shù)組。實參數(shù)組名即是實參數(shù)組的首地址,相當(dāng)于指針常量;形參數(shù)組名相當(dāng)于指針變量。實際上,C編譯都是將形參數(shù)組名作為指針變量來處理的[3]。所以,數(shù)組名作為函數(shù)參數(shù)可以按指針作為函數(shù)參數(shù)來理解。

如下例所示,數(shù)組名array代表數(shù)組array的首地址,通過“值傳遞”,形參數(shù)組名a,也可以理解為形參指針變量a,保存了數(shù)組array的首地址,因此,在swap函數(shù)中對形參數(shù)組a的操作即是對實參數(shù)組array的操作。

#include

void swap(int a[])

{

int temp;

temp=a[0]; a[0]=a[1]; a[1]=temp;

}

void main()

{

int array[2];

scanf("%d%d", &array[0], &array[1]);

swap(array);

printf("%d %d\n", array[0], array[1]);

}

輸入:1 2

輸出:2 1

6結(jié)論

綜上所述,C語言函數(shù)參數(shù)問題主要涉及兩個概念:傳遞方式和數(shù)據(jù)類型。實參與形參的傳遞方式只有一種,即“值傳遞”。參數(shù)的數(shù)據(jù)類型可以為普通類型、指針類型和數(shù)組類型,數(shù)組類型實際上是按指針類型來處理的,所以,主要是指針類型與非指針類型的區(qū)別。對初學(xué)者來說,問題的難點在于數(shù)據(jù)類型的不同而非傳遞方式,即指針類型變量與非指針類型變量的區(qū)別。

參考文獻(xiàn):

[1]田祥宏.C語言程序設(shè)計[M].西安:西安電子科技大學(xué)出版社,2007.

c語言函數(shù)范文第4篇

關(guān)鍵詞:C語言 函數(shù) 參數(shù)傳遞

中圖分類號:TP312 文獻(xiàn)標(biāo)識碼:A 文章編號:1674-098X(2014)11(a)-0135-02

“C語言程序設(shè)計”課程是信息類專業(yè)的一門非常重要的基礎(chǔ)課程,這門課程的主要目的就是讓學(xué)生以C語言為例了解高級程序設(shè)計語言的結(jié)構(gòu),掌握程序設(shè)計的基本思想,具備初步的分析問題和用計算機解決問題的能力。函數(shù)是C語言程序設(shè)計課程的重點和難點,它體現(xiàn)了模塊化程序設(shè)計的思想,將一個復(fù)雜的問題分解成一個個小而簡單的問題,通過解決一個個小問題進(jìn)而實現(xiàn)大的復(fù)雜問題的求解。在函數(shù)的教學(xué)中,經(jīng)常會有教師不好教學(xué)生學(xué)不懂的現(xiàn)象,學(xué)生學(xué)完函數(shù)后,基本概念和結(jié)構(gòu)語法都清楚,但是針對具體的問題就無從下手,教學(xué)效果一直不是太好。筆者在多年C語言教學(xué)的實踐基礎(chǔ)上,結(jié)合我校學(xué)生的具體情況,對函數(shù)部分的內(nèi)容組織和教學(xué)方法做了一些探討。

1 教學(xué)內(nèi)容和安排

函數(shù)部分一般按以下內(nèi)容進(jìn)行教學(xué)。

(1)函數(shù)的作用和分類:標(biāo)準(zhǔn)庫函數(shù)和自定義函數(shù)。

(2)函數(shù)定義的基本格式:無參函數(shù)、有參函數(shù)和空函數(shù)。

(3)函數(shù)的參數(shù)傳遞:值傳遞和地址傳遞。

(4)函數(shù)的返回值:無返回值、一個返回值和多個返回值。

(5)函數(shù)的調(diào)用:作為單獨語句、作為表達(dá)式和作為函數(shù)參數(shù)。

(6)函數(shù)的遞歸調(diào)用和嵌套調(diào)用。

(7)函數(shù)的聲明:聲明的位置、格式和省略情況。

(8)變量的作用域:全局變量和局部變量。

(9)變量的存儲類型及生存期:自動變量、靜態(tài)變量、外部變量和寄存器變量。

可以看出,函數(shù)部分的內(nèi)容非常多,而且會有許多新的概念突然介入,有相當(dāng)一部分教材,以譚浩強教授的《C程序設(shè)計》(第四版)為代表,將函數(shù)作為單獨一章放在選擇控制結(jié)構(gòu)和數(shù)組之后,把函數(shù)相關(guān)的上述所有內(nèi)容都放在這一章中介紹,然后在后續(xù)的指針、結(jié)構(gòu)體和文件等章節(jié)中又幾乎沒有函數(shù)的蹤影,程序的主體仍然放到main()函數(shù)中去講解,筆者認(rèn)為這樣的內(nèi)容編排結(jié)構(gòu)不利于學(xué)生對函數(shù)的把握,它會導(dǎo)致函數(shù)和其他內(nèi)容脫節(jié),給學(xué)生造成這是專門的一章,不學(xué)或?qū)W不好對其它內(nèi)容不會產(chǎn)生多大影響的印象,結(jié)果到課程結(jié)束時仍然對函數(shù)知之甚少,平時也幾乎沒用函數(shù)來編寫過程序,導(dǎo)致到了學(xué)期末學(xué)生在編程時仍然習(xí)慣把所有程序都放到一個main()函數(shù)中去編寫,很少有模塊化程序設(shè)計的思想,為以后編寫復(fù)雜程序或者參加團(tuán)隊合作埋下了隱患。

該文作者在講授函數(shù)這一部分時,參考了哈爾濱工業(yè)大學(xué)蘇小紅教授的高教版《C語言程序設(shè)計》(第二版)的內(nèi)容編排,把函數(shù)提到了數(shù)組之前介紹,而且從函數(shù)這一章開始,后面幾乎所有的程序都是按模塊化思想將程序分成一個個小函數(shù),再通過main()函數(shù)調(diào)用這些函數(shù)來實現(xiàn)主體功能,并且在后續(xù)內(nèi)容的講解中,不斷強化學(xué)生對函數(shù)的把握,強化學(xué)生模塊化程序設(shè)計的思想,學(xué)生在學(xué)習(xí)的過程當(dāng)中,不斷地復(fù)習(xí)鞏固著函數(shù)的知識,不斷地感受著模塊化程序設(shè)計的思想,也逐漸養(yǎng)成了用函數(shù)設(shè)計程序的習(xí)慣,實踐表明,到學(xué)期末的時候,大多數(shù)學(xué)生都可以寫一些簡單的函數(shù)并通過main()函數(shù)調(diào)用來進(jìn)行程序設(shè)計。

2 函數(shù)的設(shè)計思想和設(shè)計方法

在進(jìn)行程序設(shè)計時,很多學(xué)生感到困惑、難以理解和掌握的是什么時候需要設(shè)計函數(shù)和該設(shè)計什么樣的函數(shù),形參和返回值該如何設(shè)置。對這個問題,筆者認(rèn)為在講解的時候要著重把握幾點。

首先,在確定什么時候該設(shè)計函數(shù)時,需要先對整個程序的過程有個把握,確定程序的主體功能,這樣,對需不需要設(shè)計函數(shù)及對哪些部分可以設(shè)計函數(shù)就有了較為明確的答案。例如:從鍵盤上輸入一個整數(shù)n(n>1且n<10),輸出1!+2!+3!+...+n!的值。

對程序進(jìn)行分析后,可以得出程序主體可以分成兩個步驟:

輸入一個整數(shù)n;

輸出1!+2!+3!+...+n!的值。

在第2) 步驟中,由于重復(fù)用到了求階乘的功能,所以如果把求階乘這部分設(shè)計成一個函數(shù),將會對第2) 步的編程起到簡化的作用。這樣,經(jīng)過初步分析,可以確定需要設(shè)計一個函數(shù),此函數(shù)的功能是對給定的一個整數(shù)m,求出其階乘。

函數(shù)的功能確定后,接著就可以著手設(shè)計函數(shù)了。具體到函數(shù)設(shè)計時,很多學(xué)生的疑惑是怎么設(shè)計函數(shù)的參數(shù)和返回值,在這里,筆者建議學(xué)生采用“黑匣子”的方法設(shè)計函數(shù),即不需要管函數(shù)的內(nèi)部結(jié)構(gòu),把它看做一個“黑匣子”,只從外部的功能要求來確定函數(shù)應(yīng)該具備什么樣的功能,進(jìn)而確定主函數(shù)在調(diào)用該函數(shù)時需要傳遞給它什么參數(shù),它在返回主調(diào)函數(shù)時又需不需要返回值或需要返回幾個值。在上個例子中,函數(shù)的功能確定是求階乘,在主函數(shù)調(diào)用它時需要告訴它對誰求階乘,即傳遞給該函數(shù)階乘的階數(shù)m,函數(shù)調(diào)用結(jié)束后,需要m的階乘返回主調(diào)函數(shù),即只需要返回一個值,如圖1所示。

由此,我們得出此函數(shù)的相關(guān)內(nèi)容:

函數(shù)功能:求出整數(shù)m的階乘m!

函數(shù)入口參數(shù):一個形參,整形變量m表示階乘的階數(shù)

函數(shù)返回值:一個返回值,返回m!的值

這段信息可以作為注釋放在函數(shù)的開頭以便讓其他程序員有足夠的信息了解如何使用該函數(shù)。然后根據(jù)C語言中函數(shù)的定義格式可以寫出求階乘函數(shù)定義:int fact(int m);考慮到m!的范圍,我們可以將其修改定義為:long fact(int m);

至此,函數(shù)的第一個難點就解決了。

3 函數(shù)的參數(shù)傳遞

在函數(shù)需要有多個返回值時,僅僅一個return就很難滿足要求了,這里就需要利用指針或全局變量將函數(shù)中的多個值傳遞到主調(diào)函數(shù)中,這屬于函數(shù)的參數(shù)傳遞問題。函數(shù)的參數(shù)傳遞是函數(shù)部分的又一個難點,可以分為值傳遞和地址傳遞,因為還關(guān)系到指針的應(yīng)用,學(xué)生一時間很難理解和掌握。鑒于這一點,筆者采用形象類比法結(jié)合內(nèi)存空間講解了值傳遞和地址傳遞的區(qū)別。

函數(shù)在被調(diào)用時新開辟了一段內(nèi)存空間,所有形參和函數(shù)內(nèi)部變量都在這個內(nèi)存空間中被訪問或修改,一旦返回主調(diào)函數(shù)這段內(nèi)存空間也就被釋放掉,形參的值不會傳遞給實參,影響到主調(diào)函數(shù)。即在進(jìn)行值傳遞時相當(dāng)于有一個復(fù)制操作,即將實參的值賦給函數(shù)空間的形參,這是一個單向傳遞,因此,對形參的改變不會影響到實參。而地址傳遞的實質(zhì)是將主調(diào)函數(shù)中的某個或多個地址放到被調(diào)函數(shù)中進(jìn)行訪問,此操作間接訪問到了主調(diào)函數(shù)中的變量,因而影響到了主調(diào)函數(shù)中的變量值。

上述講法需要學(xué)生建立內(nèi)存空間的概念,要對程序的存儲空間有所認(rèn)識,相當(dāng)一部分同學(xué)表示難以理解。筆者結(jié)合大一學(xué)生都學(xué)過計算機引論的實際情況,將值傳遞比喻為將計算機中的某一文件file1.doc拷貝給別人,別人拷走后可以隨便修改這個文件的內(nèi)容,這些修改都不會影響到原來的文件file1.doc。當(dāng)傳遞的是地址的時候,即使用指針變量作函數(shù)參數(shù)時,相當(dāng)于把機器密碼、要修改的文件路徑及文件名(如d:\project\file1.doc)告訴了別人,別人在修改時直接針對file1.doc,進(jìn)行修改后,file1.doc的內(nèi)容肯定也會發(fā)生改變,這就是地址傳遞。經(jīng)過這樣形象的比喻后,學(xué)生多表示容易理解,在寫程序時會有意識地考慮需要進(jìn)行的是值傳遞還是地址傳遞,形參該設(shè)置成普通變量還是指針變量,教學(xué)效果有所改善。

4 結(jié)語

實踐證明,在筆者進(jìn)行的函數(shù)教學(xué)中,相當(dāng)一部分同學(xué)對函數(shù)有了形象的認(rèn)識,更深地理解了模塊化程序設(shè)計的思想,取得了良好的學(xué)習(xí)效果。學(xué)無止境,教亦無止境。除了以上幾點,只函數(shù)部分就還有很多可以繼續(xù)深入挖掘的東西,比如從函數(shù)有無參數(shù)方面,函數(shù)有無返回值或是否有多個返回值方面,變量的存儲類型和生存期方面等等,這些都值得我們教師不斷地研究不斷地探討。但歸根結(jié)底,如何讓學(xué)生容易掌握要點,如何讓學(xué)生發(fā)自內(nèi)心地喜歡學(xué)習(xí)、愛上學(xué)習(xí)并善于主動學(xué)習(xí),筆者認(rèn)為才是教師的最終目的。

參考文獻(xiàn)

[1] 蘇小紅.C語言程序設(shè)計[M].2版.高等教育出版社,2013.

[2] 譚浩強.C程序設(shè)計[M].4版.清華大學(xué)出版社,2011.

c語言函數(shù)范文第5篇

【關(guān)鍵詞】ICT專業(yè) 學(xué)術(shù)漢語 教學(xué)模式

【基金項目】本文的研究受到重慶郵電大學(xué)社會科學(xué)基金項目支持(K2015-08)和國際化教育教學(xué)研究項目支持(GJJY15-2-07)。

【中圖分類號】G64 【文獻(xiàn)標(biāo)識碼】A 【文章編號】2095-3089(2016)35-0015-02

一、前言

隨著我國“一帶一路”戰(zhàn)略的實施和“留學(xué)中國計劃”的開展,來華留學(xué)生規(guī)模不斷擴大,留學(xué)生結(jié)構(gòu)和層次也開始發(fā)生變化[1][2]。目前,重慶郵電大學(xué)有來自50多個國家和地區(qū)的長期留學(xué)生400多人在校學(xué)習(xí),其中研究生比例超過50%。隨著高水平漢語留學(xué)者的出現(xiàn),越來越多的留學(xué)生選擇以漢語作為學(xué)術(shù)研究的工具,部分留學(xué)生已在我校開始攻讀博士學(xué)位,這給傳統(tǒng)對外漢語教學(xué)帶來了新的機遇和挑戰(zhàn)。

學(xué)術(shù)漢語是借鑒ESP(English for Special Purpose,專門用途英語)理論創(chuàng)造的一個術(shù)語,其目的是為專業(yè)學(xué)習(xí)服務(wù)[2][3]。目前,進(jìn)入專業(yè)學(xué)習(xí)的重慶郵電大學(xué)留學(xué)生漢語水平一般要求在HSK4級以上,這一漢語水平的學(xué)生在進(jìn)入到ICT專業(yè)課堂學(xué)習(xí)的時候,面對大量的通信編碼、信令、存儲器等ICT領(lǐng)域的專業(yè)詞匯時仍存在大量無法理解的現(xiàn)象。造成這些問題的主要原因包括:(1)缺少具有針對性的學(xué)術(shù)漢語教材學(xué)習(xí)。(2)專業(yè)術(shù)語理解障礙,對專業(yè)術(shù)語的掌握和理解上綴蹺零。(3)不熟悉ICT專業(yè)學(xué)術(shù)漢語文獻(xiàn)寫作規(guī)則,缺少專業(yè)漢語教師與學(xué)術(shù)導(dǎo)師的聯(lián)合指導(dǎo)。(4)缺乏ICT學(xué)術(shù)論文文體知識、論文思維,沒有經(jīng)過系統(tǒng)、科學(xué)的科研能力培養(yǎng)。

二、留學(xué)生教育教學(xué)模式探索

形成重視學(xué)術(shù)漢語教學(xué)的意識和氛圍。在意識上重視學(xué)術(shù)漢語教學(xué),突出本、碩、博階段專業(yè)素養(yǎng)的培養(yǎng)和訓(xùn)練,區(qū)分留學(xué)生學(xué)歷教育和短期漢語進(jìn)修學(xué)習(xí),圍繞計算機、通信領(lǐng)域的漢語學(xué)術(shù)論文面向留學(xué)生舉辦“讀論文、做實驗”的科技競賽活動。

設(shè)置相應(yīng)的課程并加強相關(guān)課程研究。制定分階段的學(xué)術(shù)漢語課程,從一般漢語教學(xué)的高級漢語階段開始,延伸到本碩博學(xué)歷教育階段,幫助留學(xué)生順利銜接到專業(yè)學(xué)習(xí)和研究。通過學(xué)習(xí)一些基本的專業(yè)詞匯,掌握基本的句法結(jié)構(gòu),為學(xué)歷生以及從事科學(xué)研究的漢語學(xué)習(xí)者進(jìn)入專業(yè)學(xué)習(xí)、研究階段打下語言基礎(chǔ)。

探索留學(xué)生學(xué)術(shù)漢語導(dǎo)師聯(lián)合制。在留學(xué)生進(jìn)入漢語學(xué)習(xí)高級階段初期、即將進(jìn)入專業(yè)學(xué)習(xí)的前期,建立留學(xué)生學(xué)術(shù)漢語導(dǎo)師聯(lián)合制,由對外漢語教師配合留學(xué)生的指導(dǎo)教師共同培養(yǎng)學(xué)生準(zhǔn)確運用漢語進(jìn)行科學(xué)研究的能力。傳授用漢語進(jìn)行學(xué)術(shù)寫作的學(xué)術(shù)規(guī)范知識,訓(xùn)練用漢語進(jìn)行學(xué)術(shù)研究的方法,包括搜集資料的方法、開展實驗的方法、撰寫論文的方法,逐步培養(yǎng)漢語學(xué)術(shù)思維和科研意識。

三、留學(xué)生教育教學(xué)實踐

為進(jìn)入專業(yè)學(xué)習(xí)的留學(xué)生開設(shè)過渡性學(xué)術(shù)漢語課程和學(xué)術(shù)能力培養(yǎng)課程。在過渡性課程上,通過講授計算機導(dǎo)論、通信原理等專業(yè)課程的基本詞匯、句法,為學(xué)生補充專業(yè)學(xué)習(xí)的基礎(chǔ)知識,使其掌握如何運用漢語學(xué)習(xí)專業(yè)課程的技能。在學(xué)術(shù)能力培養(yǎng)課程上,講授用漢語進(jìn)行ICT學(xué)術(shù)寫作的學(xué)術(shù)規(guī)范知識、學(xué)術(shù)研究方法。培養(yǎng)留學(xué)生掌握通過軟件學(xué)報、計算機研究與發(fā)展、電子學(xué)報等中文學(xué)術(shù)期刊和知網(wǎng)等學(xué)術(shù)工具進(jìn)行資料搜集的方法。培養(yǎng)留學(xué)生掌握提出問題、分析問題、解決問題逐層推進(jìn)的科技寫作方法。

傳統(tǒng)的教材式的對外漢語教學(xué)方法因教材出版周期較長,不能及時反應(yīng)學(xué)術(shù)漢語的進(jìn)展;另一方面,以慕課為主的網(wǎng)絡(luò)教學(xué)資源良莠不齊,詞法、句法使用隨意,術(shù)語準(zhǔn)確性差,不適合直接引入校園作為知識進(jìn)行傳授。在課程資源建設(shè)上,我校結(jié)合學(xué)校辦學(xué)特色、專業(yè)特長和留學(xué)生專業(yè)分布特點,由對外漢語教師、ICT專業(yè)教師等組成了專門的課程資源建設(shè)團(tuán)隊,借助互聯(lián)網(wǎng)手段及時獲取最新的、權(quán)威的學(xué)術(shù)成果。通過篩選、匯編、整理等環(huán)節(jié),嚴(yán)格遵循學(xué)術(shù)文章中的專業(yè)詞匯、術(shù)語和寫作特點,以詞匯銜接、語法銜接作為切入點,按照計算機、通信專業(yè)設(shè)置分類,結(jié)合學(xué)術(shù)漢語教學(xué)特點,對資源進(jìn)行認(rèn)定、注解,并最終形成教學(xué)講義供學(xué)生使用。

四、結(jié)語

在來華留學(xué)生漢語水平不斷提高、學(xué)歷需求不斷提升、專業(yè)技能學(xué)習(xí)目的不斷明確的情況下,留學(xué)生運用漢語開展科學(xué)研究時亟需學(xué)術(shù)專業(yè)教師的指導(dǎo)。本文以重慶郵電大學(xué)ICT專業(yè)留學(xué)生為例,探討了我校在學(xué)術(shù)漢語教育教學(xué)方面的現(xiàn)狀和創(chuàng)新,希望借此吸引更多的學(xué)術(shù)專業(yè)教師關(guān)注留學(xué)生學(xué)術(shù)漢語的指導(dǎo)與教學(xué)。

參考文獻(xiàn):

[1]單韻鳴.專門用途漢語教材的編寫問題――以《科技漢語閱讀教程》系列教材為例[J].暨南大學(xué)華文學(xué)院學(xué)報,2008,(2).

[2]高增霞,劉福英.論學(xué)術(shù)漢語在對外漢語教學(xué)中的重要性,云南師范大學(xué)學(xué)報(對外漢語教學(xué)與研究版),2016,14(2).

[3]張明月,科技漢語的文體研究及其在科技漢語教材編寫中的應(yīng)用.南京師范大學(xué),碩士論文.

作者簡介:

相關(guān)期刊更多

忻州師范學(xué)院學(xué)報

省級期刊 審核時間1個月內(nèi)

忻州師范學(xué)院

徐州師范大學(xué)學(xué)報

省級期刊 審核時間1個月內(nèi)

江蘇省教育廳

贛南師范學(xué)院學(xué)報

省級期刊 審核時間1個月內(nèi)

贛南師范大學(xué)

西丰县| 抚松县| 洛浦县| 泸定县| 高淳县| 石阡县| 栾城县| 无为县| 西藏| 伊金霍洛旗| 隆安县| 分宜县| 长岛县| 仙桃市| 吉首市| 泾阳县| 太保市| 深州市| 南开区| 凉山| 定西市| 名山县| 班玛县| 斗六市| 云和县| 竹溪县| 黄山市| 石嘴山市| 麻栗坡县| 莱阳市| 临洮县| 轮台县| 尉氏县| 江西省| 韶关市| 沈阳市| 仁怀市| 岳西县| 望奎县| 从化市| 武义县|