第06章-函數(shù)與變量作用域_第1頁
第06章-函數(shù)與變量作用域_第2頁
第06章-函數(shù)與變量作用域_第3頁
第06章-函數(shù)與變量作用域_第4頁
第06章-函數(shù)與變量作用域_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第7章函數(shù)與變量作用域C語言是通過函數(shù)來實現(xiàn)模塊化程序設(shè)計的。教學(xué)目的:掌握函數(shù)的定義與調(diào)用,變量的作用域;了解函數(shù)的嵌套與遞歸調(diào)用,內(nèi)部、外部函數(shù)特點,以及變量的存儲特性。11/14/20231教學(xué)內(nèi)容:7.1*函數(shù)的定義與調(diào)用7.2函數(shù)的嵌套調(diào)用與遞歸調(diào)用7.3內(nèi)部函數(shù)與外部函數(shù)7.4*內(nèi)部變量與外部變量7.5變量的存儲特性本章要點本章作業(yè)與上機實踐11/14/202327.1*

函數(shù)定義與函數(shù)調(diào)用7.1.1函數(shù)定義任何函數(shù)都是由函數(shù)說明和函數(shù)體兩部分組成。1.分類根據(jù)函數(shù)有無參數(shù),將函數(shù)分為無參函數(shù)和有參函數(shù)。11/14/20233(1)無參函數(shù)[函數(shù)類型]函數(shù)名(void){說明語句部分;可執(zhí)行語句部分;

}(2)有參函數(shù)[函數(shù)類型]函數(shù)名(數(shù)據(jù)類型參數(shù)[,數(shù)據(jù)類型參數(shù)2…]){說明語句部分;可執(zhí)行語句部分;

}形參表。調(diào)用有參函數(shù)時,由調(diào)用函數(shù)為形參提供實際值,簡稱為實參。在新標(biāo)準(zhǔn)中,函數(shù)不可缺省參數(shù)表;用“void”表示不需要參數(shù)。11/14/202342.函數(shù)的返回值與函數(shù)類型C語言的函數(shù),還可分為有返回值函數(shù)和無返回值函數(shù)兩種。(1)有返回值函數(shù)與return語句①一般格式:

return(返回值表達式);②功能:返回調(diào)用函數(shù),并將“返回值表達式”的值帶給調(diào)用函數(shù)。注意:函數(shù)中無return語句,返回1個不確定的值??捎谩皏oid”定義成“無(空)類型”,明確表示不返回值。括號可以缺省11/14/20235(2)函數(shù)類型①函數(shù)類型應(yīng)與return語句中“返回值表達式”的類型一致。如果不一致,則以函數(shù)類型為準(zhǔn)。②如果缺省函數(shù)類型,則系統(tǒng)一律按int型處理。良好的程序設(shè)計習(xí)慣:為了使程序具有良好的可讀性并減少出錯,將無返回值函數(shù)定義為空類型void;同時,也不使用系統(tǒng)對函數(shù)類型的缺省處理。11/14/20236[案例7.1]定義一個求兩個整數(shù)中極大值的max()函數(shù)。

/*功能:求2個整數(shù)中的較大數(shù)*//*形參:2個,整型*//*返回值:2個整數(shù)中的較大數(shù)*/intmax(intn1,intn2) /*函數(shù)定義*/{return(n1>n2?n1:n2);

}/**/voidmain(void){int

max(intn1,intn2); /*對被調(diào)用函數(shù)進行說明*/

intnum1,num2;

printf("inputtwonumbers:");

scanf("%d%d",&num1,&num2);

printf("max=%d\n",max(num1,num2));

}對函數(shù)的注釋11/14/202373、說明(1)函數(shù)定義不允許嵌套。一個函數(shù)的定義,可以放在程序中的任意位置,但不能在另一個函數(shù)的函數(shù)體內(nèi),即不能嵌套定義。例如:main(){……

intmax(……){……}}(2)空函數(shù)──函數(shù)體為空的無參函數(shù):[函數(shù)類型]函數(shù)名(void){}11/14/202387.1.2函數(shù)調(diào)用與返回1、對被調(diào)用函數(shù)的說明和函數(shù)原型(1)函數(shù)說明的一般格式

在新標(biāo)準(zhǔn)中,采用函數(shù)原型方式,對被調(diào)用函數(shù)進行說明:

函數(shù)類型函數(shù)名(形參表);11/14/20239(2)函數(shù)說明的兩種方式①誰調(diào)用誰說明:函數(shù)說明語句放在調(diào)用函數(shù)的函數(shù)體中。例如,在[案例7.1]主函數(shù)main()中:voidmain(void){intmax(intn1,intn2);

……}對被調(diào)用函數(shù)進行說明11/14/202310②預(yù)先統(tǒng)一說明——函數(shù)說明通常放在所有函數(shù)定義體之前。在這種方式下,所有調(diào)用函數(shù)都無需再對自定義函數(shù)進行說明。例如,在[案例7.1]中,可以將對max()函數(shù)的說明放在程序文件開始處:voidmain(void){

int

max(intn1,intn2);……}11/14/202311顯然,對于被多個函數(shù)調(diào)用的自定義函數(shù)而言,采用預(yù)先統(tǒng)一說明方式進行說明,可以有效地減少函數(shù)說明次數(shù)。

注意:如果被調(diào)用函數(shù)的定義體,出現(xiàn)在調(diào)用函數(shù)之前,可以缺省說明。11/14/2023122、函數(shù)調(diào)用

函數(shù)名([實參表])

例如,在[案例7.1]的主函數(shù)中:

printf(……,max(num1,num2)

);注意:調(diào)用有參函數(shù),必須提供實參(常量/變量/表達式/函數(shù))。調(diào)用時,實參必須具有確定的值,且與形參個數(shù)相等、類型匹配。11/14/202313(1)調(diào)用方式①語句方式——無返回值函數(shù)的調(diào)用,可作為一條獨立的語句。例如,printf()、scanf()等庫函數(shù)的調(diào)用,均作為一條獨立的語句。②表達式方式——有返回值函數(shù)作為表達式的一項,以函數(shù)返回值參與表達式的運算。例如,“max=max(x,y)”是一個賦值表達式,把max()函數(shù)的返回值賦予變量max。11/14/202314(2)斷點與函數(shù)調(diào)用的返回斷點——被調(diào)用函數(shù)執(zhí)行完畢,返回調(diào)用函數(shù)后繼續(xù)執(zhí)行的位置。調(diào)用函數(shù)中的斷點位置分兩種情況:①語句調(diào)用方式:斷點為函數(shù)調(diào)用語句的下一條語句。例如,[案例7.1]中的語句調(diào)用“printf(……);”,其斷點為該語句的下一條語句“getch();”。11/14/202315②表達式調(diào)用方式:斷點為函數(shù)調(diào)用所在的表達式。例如,在[案例7.1]中,“printf(……,max(num1,num2));”語句中的表達式調(diào)用“max(num1,num2)”:其斷點為該表達式調(diào)用所在的表達式“max(num1,num2)”(在本例中,“max(num1,num2)”函數(shù)調(diào)用既是表達式調(diào)用,本身又構(gòu)成一個簡單表達式)。11/14/2023167.1.3參數(shù)傳遞發(fā)生函數(shù)調(diào)用時,根據(jù)參數(shù)值的性質(zhì)不同,將參數(shù)傳遞分為兩種:(1)

值傳遞——參數(shù)值是一個一般數(shù)據(jù)(整形、實型、字符型數(shù)據(jù)等)。系統(tǒng)把實參值復(fù)制1份給形參;被調(diào)用函數(shù)結(jié)束時,形參值不能傳回給實參。(2)

地址(引用)傳遞——參數(shù)值是一個地址。11/14/202317執(zhí)行[案例7.1]時的參數(shù)傳遞:intmax(int

n1,int

n2){return(n1>n2?n1:n2);

}

main(){int

max(intn1,intn2);

intnum1,num2;

printf("inputtwonumbers:");

scanf("%d%d",&num1,&num2);

printf("max=%d\n",max(num1,num2));

}11/14/202318(1)形參變量只有在被調(diào)用時,才分配內(nèi)存單元;調(diào)用結(jié)束時,立即被釋放。因此,形參只有在該函數(shù)內(nèi)有效。調(diào)用結(jié)束,返回調(diào)用函數(shù)后,則不能再使用該形參變量。(2)實參和形參占用不同的內(nèi)存單元,即使同名也互不影響。11/14/2023197.1.4小結(jié)1.函數(shù)定義不允許嵌套。2.調(diào)用有參函數(shù)時,實參的個數(shù)和類型,必須與形參匹配。3.函數(shù)調(diào)用的兩種方式與斷點位置(1)語句方式:斷點為函數(shù)調(diào)用語句的下一條語句。(2)表達式方式:斷點為函數(shù)調(diào)用所在的表達式。11/14/2023204.參數(shù)傳遞分兩種:(1)

值傳遞:單向傳遞。(2)

地址(引用)傳遞。[返回]11/14/2023217.2函數(shù)的嵌套調(diào)用和遞歸調(diào)用7.2.1函數(shù)的嵌套調(diào)用

[案例7.3]計算∑=1!+2!+……+n!(n∈[1,20]的整數(shù),從鍵盤輸入)。算法設(shè)計要點:本案例可以設(shè)計2個函數(shù):factor()用于求n!;sum()通過調(diào)用factor()來實現(xiàn)求∑。程序框架如下(完整程序詳見教材7.2.1):

11/14/202322……voidmain(){……

sum(num); /*調(diào)用函數(shù)sum()*/……}voidsum(intnum){……sum+=factor(loop); /*求累計和*/……}longfactor(intnum) /*求num的階乘*/{……}11/14/202323在[案例7.3]中,主函數(shù)main()調(diào)用求和函數(shù)sum(),sum()又循環(huán)調(diào)用求階乘的函數(shù)factor()。一般地說,函數(shù)的嵌套調(diào)用是指,在執(zhí)行被調(diào)用函數(shù)時,該函數(shù)又調(diào)用其它函數(shù)的情形。注意:被調(diào)用函數(shù)執(zhí)行完畢后,將返回到調(diào)用函數(shù)的斷點繼續(xù)執(zhí)行。簡言之,誰調(diào)用,返回到誰的斷點繼續(xù)執(zhí)行。11/14/2023247.2.2函數(shù)的遞歸調(diào)用[案例7.4]用遞歸法計算n!(1!=1,n!=(n-1)!*n(n≥2))。算法設(shè)計要點:(1)根據(jù)計算n!的遞歸定義可知,為了計算n!,必須首先計算(n-1)??;以此類推,直至1?。?!=1)。(2)依據(jù)1!求2!=1!*2,再依據(jù)2!求3!=2!*3;同理,依據(jù)(n-1)!求n!=(n-1)!*n。11/14/202325longfactor(intnum){longfact;if(num>1)fact=factor(num–1)*num;elsefact=1;return(fact);}以num=5為例,其執(zhí)行過程詳見教材7.2.2。遞歸調(diào)用自己11/14/202326C語言允許函數(shù)直接(或間接)地調(diào)用它自己,稱為遞歸調(diào)用;這種函數(shù)稱為遞歸函數(shù)。例如,[案例7.4]中的函數(shù)factor()就是一個遞歸函數(shù)。防止遞歸調(diào)用無終止地進行的常用辦法:添加1個繼續(xù)(或終止)遞歸調(diào)用的條件判斷。例如,[案例7.4]中函數(shù)factor()中的“if(num>1)”。[返回]11/14/2023277.3內(nèi)部函數(shù)和外部函數(shù)

C語言程序中的函數(shù),是通過被調(diào)用而執(zhí)行的,所以一個函數(shù)需要被其它函數(shù)調(diào)用。但是,當(dāng)一個程序由多個源文件組成時,在一個源文件中定義的函數(shù),能否被其它源文件中的函數(shù)調(diào)用呢?C語言據(jù)此將函數(shù)分為內(nèi)部函數(shù)和外部函數(shù)。11/14/2023287.3.1內(nèi)部函數(shù)(又稱靜態(tài)函數(shù))

如果在一個源文件中定義的函數(shù),只能被本源文件中的其它函數(shù)調(diào)用,這種函數(shù)稱為內(nèi)部函數(shù)。1.定義static

函數(shù)類型函數(shù)名([形參表]){……}2.特點:只能被本文件中的函數(shù)所調(diào)用。3.好處:不用擔(dān)心與其它源文件中的函數(shù)同名,因為即使同名也沒關(guān)系。11/14/2023297.3.2外部函數(shù)如果在某源文件中定義的函數(shù),可被同一程序中所有源文件中的函數(shù)調(diào)用,這種函數(shù)稱為外部函數(shù)。1.定義:[extern]

函數(shù)類型函數(shù)名([形參表]){……}2.特點:允許被所有源文件中的函數(shù)所調(diào)用。3.調(diào)用其它源文件中的外部函數(shù)時,需要對其進行說明:[extern]

函數(shù)類型函數(shù)名([形參表])[,函數(shù)名2([形參表2])…];11/14/202330[案例7.5]

將加、減、乘、除和求余數(shù)運算練習(xí)程序(第3版))的源文件組織形式改為:實現(xiàn)加、減、乘、除和求余數(shù)運算的程序段,均作為1個獨立的函數(shù)、存儲在1個獨立的源文件中。程序框架如下(完整程序詳見案例源代碼):11/14/202331……/*外部函數(shù)說明*/externvoidaddition(intn1,intn2);externvoidsubtraction(intn1,intn2);

externvoidmultiplication(intn1,intn2);externvoiddivision(intn1,intn2);externvoidremainder(intn1,intn2);voidmain(){……}11/14/2023327.3.3多個源文件的編譯和連接在軟件工程項目中,采用結(jié)構(gòu)化方法進行程序設(shè)計與編程,通常會產(chǎn)生多個源文件(例如源程序文件、數(shù)據(jù)結(jié)構(gòu)定義文件等)。那么,如何將這些源文件編譯、連接成一個統(tǒng)一的可執(zhí)行文件呢?一般有兩種方法:11/14/202333(1)分別編譯、一并連接C編譯程序是以源文件為編譯單位。當(dāng)一個程序中的函數(shù)和數(shù)據(jù)結(jié)構(gòu)分放在多個源文件中時:先將各文件分別編譯,再通過link命令產(chǎn)生一個可執(zhí)行文件(.exe)。

(2)集中編譯、連接利用編譯預(yù)處理命令#include,將其它源文件包含到主函數(shù)main()所在的源文件的開頭;然后直接編譯該文件即可。11/14/202334例如,在[案例7.5]中的主函數(shù)main()所在的源文件case75_1.c的開頭添加如下幾行:……/*將其它各源文件包含進來*/#include"case75_2.c"#include"case75_3.c"#include"case75_4.c"#include"case75_5.c"#include"case75_6.c"voidmain(){……}[返回]11/14/2023357.4*

內(nèi)部變量與外部變量

C語言中的變量,定義位置不同,其作用域也不同,據(jù)此將變量分為內(nèi)部變量和外部變量。7.4.1內(nèi)部變量1、內(nèi)部變量——在函數(shù)內(nèi)(函數(shù)說明+函數(shù)體)定義的變量。2、作用域——只在該函數(shù)范圍內(nèi)有效。所以內(nèi)部變量也稱“局部變量”。11/14/202336例如,在[案例7.4]中,主函數(shù)main()中定義的變量num就是內(nèi)部變量,它僅在主函數(shù)main()中才能使用;求階乘的factor()函數(shù),函數(shù)說明中的形參變量num,以及函數(shù)體中定義的變量fact,均屬內(nèi)部變量,都只能在factor()函數(shù)中使用。

說明:在不同的函數(shù)中,允許使用同名內(nèi)部變量。它們代表不同的對象,互不干擾。例如,在[案例7.4]中,主函數(shù)main()中的內(nèi)部變量num,與函數(shù)factor()中的內(nèi)部變量num同名。11/14/202337[案例]內(nèi)部變量的應(yīng)用。voidmain(){voidsum(intnum);

int

num=100;

printf(“num_main()=%d\n”,num); /*調(diào)用前實參的值*/sum(num

); /*調(diào)用函數(shù)*/

printf("num_main()=%d\n",num); /*調(diào)用后實參的值*/

getch();}voidsum(intnum){inti;

printf("num_sum()=%d\n",num);/*改變前的形參值*/

for(i=num-1;i>=1;i--)num+=i;/*改變形參的值*/

printf("num_sum()=%d\n",num);/*改變后的形參值*/}11/14/2023387.4.2外部變量1、外部變量——在函數(shù)外部定義的變量。2、作用域:從外部變量的定義位置開始,到本文件結(jié)束為止。外部變量不從屬于任何一個函數(shù),可被作用域內(nèi)的所有函數(shù)使用,所以外部變量又稱全局變量。11/14/202339[案例7.6]

設(shè)計一個函數(shù)cuboid(intlength,intwidth,intheight)(3個參數(shù)依次為長方體的長、寬、高),用于求長方體的體積及正、側(cè)、頂三個面的面積。算法設(shè)計要點:函數(shù)cuboid(intlength,intwidth,intheight)本身只能返回1個值(本案例選定體積),正、側(cè)、頂三個面的面積就只能通過外部變量來進行數(shù)據(jù)共享。

參考程序框架如下:11/14/202340……longarea1,area2,area3; /*定義3個外部變量,用于數(shù)據(jù)共享*/longcuboid(intlength,intwidth,intheight); /*函數(shù)說明*/voidmain(){……volume=cuboid(length,width,height);

printf("\nvolume=%ld,area1=%ld,area2=%ld,area3=%ld",volume,area1,area2,area3);}11/14/202341longcuboid(intlength,intwidth,intheight){longvolume;volume=length*width*height; /*計算體積*/

area1=length*width; /*計算3個面的面積*/

area2=width*height;

area3=length*height; return(volume); /*返回體積值*/}11/14/2023423、說明(1)外部變量的作用域:從定義點到本文件結(jié)束。為方便使用,建議:將外部變量的定義放在文件開頭,如[案例7.6]所示。(2)在同一源文件中,允許外部變量和內(nèi)部變量同名。在內(nèi)部變量的作用域內(nèi),外部變量不起作用。11/14/202343(3)外部變量可實現(xiàn)函數(shù)之間的數(shù)據(jù)共享,但又使這些函數(shù)依賴這些外部變量,因而使得這些函數(shù)的獨立性降低。注:從模塊化程序設(shè)計觀點來看,這是不利的。因此不是非用不可時,不要使用外部變量。11/14/202344[案例]內(nèi)部、外部變量的同名應(yīng)用。int

len=3,width=4,high=5;int

vs(int

len,int

width){int

vol;

vol=len*width*high;/*引用外部變量high*/returnv;

}main(){int

len=5;

printf("len=%d,width=%d,high=%d,vol=%d",

len,width,high,vs(len,width));

}len=?width=?len=?11/14/2023457.4.3小結(jié)1.內(nèi)部變量——在函數(shù)內(nèi)(函數(shù)說明+函數(shù)體)定義的變量,其作用域:只在該函數(shù)范圍內(nèi)有效。不同函數(shù)中的同名內(nèi)部變量,互不干擾。2.外部變量——在函數(shù)外部定義的變量,其作用域:從外部變量的定義位置開始,到本文件結(jié)束為止。允許內(nèi)部、外部變量同名。在內(nèi)部變量的作用域內(nèi),外部變量不起作用。[返回]11/14/2023467.5變量的存儲特性

C語言中的變量,不僅有類型特性,還有存儲特性:(1)動態(tài)存儲方式:自動內(nèi)部變量(auto)、寄存器變量(register)(2)靜態(tài)存儲方式:靜態(tài)內(nèi)部變量(static)、外部變量(extern)。11/14/2023477.5.1內(nèi)部變量的存儲1.動態(tài)存儲──自動內(nèi)部變量(簡稱自動變量)(1)定義:[auto]數(shù)據(jù)類型內(nèi)部變量表;(2)存儲特點:①作用域:局限于定義它的函數(shù)內(nèi)。②生存期:函數(shù)被調(diào)用時,分配存儲空間;調(diào)用結(jié)束就釋放。③初始化:定義而不初始化,其值是不確定的。如果初始化,則每次調(diào)用都要重新賦一次初值。11/14/2023482.靜態(tài)存儲──靜態(tài)內(nèi)部變量(1)定義:static

數(shù)據(jù)類型內(nèi)部變量表;(2)存儲特點①作用域:不變(只在本函數(shù)內(nèi)有效,其它函數(shù)不可引用)。②生存期:擴展到整個程序(即函數(shù)調(diào)用結(jié)束也不釋放)。③初始化:定義但不初始化,則系統(tǒng)自動初始化:0(整型和實型)或‘\0’(字符型);每次調(diào)用它們所在的函數(shù)時,不再重新賦初值,只是保留上次調(diào)用結(jié)束時的值!11/14/202349

[案例7.7]輸出1~4的階乘,并展示自動變量與靜態(tài)內(nèi)部變量的存儲特性?!璿oidmain(){intnum=1;for(;num<=4;num++)factorial(num);

getch();}voidfactorial(intn){staticlongfact=1; /*靜態(tài)內(nèi)部變量:只初始化1次*/

int

var_auto=0; /*自動變量:每次調(diào)用都重新初始化*/fact*=n; /*求n!*/

printf("var_auto=%d,%d!=%ld\n",var_auto,n,fact);++var_auto;}11/14/202350程序運行結(jié)果如下:

var_auto=0,1!=1

var_auto=0,2!=2

var_auto=0,3!=6

var_auto=0,4!=2411/14/2023517.5.2外部變量的存儲與作用域外部變量屬于靜態(tài)存儲。如果程序由多個源文件構(gòu)成,根據(jù)某個源文件中定義的外部變量能否被其它源文件中的函數(shù)所引用,將外部變量分為兩個作用域級別:(1)文件級外部變量──只允許被本源文件中的函數(shù)引用

static

數(shù)據(jù)類型外部變量表;說明:“static”直譯為“靜態(tài)”,很多書籍稱之為“靜態(tài)外部變量”。本書根據(jù)這種外部變量的作用域,稱之為“文件級外部變量”。11/14/202352(2)程序級外部變量──允許被程序中、各源文件內(nèi)的函數(shù)引用定義時,缺省static的外部變量,即為程序級外部變量。同一程序中的其它源文件內(nèi)的函數(shù),引用程序級外部變量時,需要進行說明:extern數(shù)據(jù)類型外部變量表;11/14/2023537.5.3小結(jié)關(guān)鍵字“static”對內(nèi)部、外部變量的影響不同:(1)將內(nèi)部變量改為靜態(tài)存儲:作用域未變,只擴展了它的生存期(函數(shù)→整個程序),且每次調(diào)用所在函數(shù)時,不再重新賦初值,只是保留上次調(diào)用結(jié)束時的值!(2)將外部變量改為static,縮小了它的作用域(整個程序→所在文件)。[返回]11/14/2023541、函數(shù)的定義[函數(shù)類型]函數(shù)名([形參表]){說明語句部分;可執(zhí)行語句部分;}(1)函數(shù)定義不允許嵌套。(2)函數(shù)中無return語句,系統(tǒng)返回一個不確定的值。可以用“void”定義成“無(空)類型”,表示不返回值。本章要點11/14/2023552、函數(shù)調(diào)用:函數(shù)名([實參表])

對于有參函數(shù):(1)必須提供實參表:實參的個數(shù)、類型必須與形參匹

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論