int func(int *a;int b) //這里a表示數(shù)組名,b表示數(shù)組的元素個(gè)數(shù)
成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括五龍口網(wǎng)站建設(shè)、五龍口網(wǎng)站制作、五龍口網(wǎng)頁制作以及五龍口網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,五龍口網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到五龍口省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
{
int c = 0;
int i;
for(i=0; ib; i++)
{
c += a[i];
}
return c/b;
}
void printf_2Array(int * array,int row,int column )
{
int i = 0;
int j = 0;
for(i; irow; i++)
{
for(j; jcolumn ; j++)
{
printf("the value at row %d and column %d is %d \r\n",i,j,array((i*column) + j));
}
}
}
向字符數(shù)組c中輸入字符串,它是這樣存儲(chǔ)的:
將字符串中的第一個(gè)字符賦給字符數(shù)組的第一個(gè)元素c[0],第二個(gè)字符賦給第二個(gè)元素c[1],以此類推。
需要注意的是,當(dāng)給c[9]賦過值之后,如果在字符串中還有剩余的字符,程序會(huì)繼續(xù)命令指針從c[9]處繼續(xù)向后移動(dòng)一個(gè)存儲(chǔ)單元的長度(在這里就是一個(gè)字節(jié)的長度),并在讀入一個(gè)字符并賦給緊挨著c[9]的那個(gè)存儲(chǔ)單元,形象一點(diǎn)兒,把它叫做c[10],以此類推,直到讀完所輸入的字符串中的所有字符,并自動(dòng)加賦'\0'。
這種輸入方式一般也能運(yùn)行,但是這是十分危險(xiǎn)的。因?yàn)榫o挨在c[9]后面的單元中的內(nèi)容是不可預(yù)料的,它可能是一個(gè)空白的存儲(chǔ)空間,也可能已經(jīng)存放了一個(gè)十分有用的數(shù)據(jù)。如果存儲(chǔ)的是一個(gè)有用的數(shù)據(jù),越界輸入就會(huì)把越界部分原先已有的數(shù)據(jù)覆蓋掉。
在程序比較小的時(shí)候,由于空白地帶比較多,程序往往可以正常運(yùn)行,但是當(dāng)程序的規(guī)模很大的時(shí)候,一旦越界輸入,(越界部分)有用數(shù)據(jù)被覆蓋掉的可能性就很大了。
最好的方法就是使用scanf("%10s", c); 以限制向字符數(shù)組中輸入字符的個(gè)數(shù)。
在C語言中,無法直接返回一個(gè)數(shù)組,但是可以通過返回對(duì)應(yīng)類型指針的方式,返回?cái)?shù)組。
在大多數(shù)情況下,一維數(shù)組和一維指針是可以通用的。
比如,定義一個(gè)函數(shù),申請(qǐng)一定長度的整型動(dòng)態(tài)數(shù)組,其長度用參數(shù)傳入,并將結(jié)果返回。如出錯(cuò),返回空指針NULL。
代碼可以寫成如下形式:
int*int_array_create(int n)//參數(shù)n為數(shù)組元素個(gè)數(shù)
{
int*r;
if(nlt;=0)return NULL;//參數(shù)錯(cuò)誤
r=(int*)malloc(sizeof(int)*n);//申請(qǐng)內(nèi)存空間,大小為n個(gè)int長度。
return r;//返回得到的整型數(shù)組的指針。
}
擴(kuò)展資料:
return是C++的關(guān)鍵字,它提供了終止函數(shù)執(zhí)行的一種方式。當(dāng)return語句提供了一個(gè)值時(shí),這個(gè)值就成為函數(shù)的返回值.
說到return,有必要提及主函數(shù)的定義,下面是從網(wǎng)絡(luò)上找到的資料,好好消化吧,對(duì)了解主函數(shù)中返回值的理解有很大的幫助.
很多人甚至市面上的一些書籍,都使用了void main(),其實(shí)這是錯(cuò)誤的。C/C++中從來沒有定義過void main()。
C++之父Bjarne Stroustrup在他的主頁上的FAQ中明確地寫著The definition void main(){/*...*/}is not and never has been C++,nor has it even been C.(void main()
從來就不存在于C++或者C)。下面我分別說一下C和C++標(biāo)準(zhǔn)中對(duì)main函數(shù)的定義。
1、C
在C89中,main()是可以接受的。Brian W.Kernighan和Dennis M.Ritchie的經(jīng)典巨著The C programming Language 2e(《C程序設(shè)計(jì)語言第二版》)用的就是main()。不過在最新的C99標(biāo)準(zhǔn)中,只有以下兩種定義方式是正確的:
int main(void)
int main(int argc,char*argv[])
(參考資料:ISO/IEC 9899:1999(E)Programming languages—C 5.1.2.2.1 Program startup)
當(dāng)然,我們也可以做一點(diǎn)小小的改動(dòng)。例如:char*argv[]可以寫成char**argv;argv和argc可以改成別的變量名(如intval和charval),不過一定要符合變量的命名規(guī)則。
如果不需要從命令行中獲取參數(shù),請(qǐng)用int main(void);否則請(qǐng)用int main(int argc,char*argv[])。
main函數(shù)的返回值類型必須是int,這樣返回值才能傳遞給程序的激活者(如操作系統(tǒng))。
如果main函數(shù)的最后沒有寫return語句的話,C99規(guī)定編譯器要自動(dòng)在生成的目標(biāo)文件中(如exe文件)加入return 0;,表示程序正常退出。不過,我還是建議你最好在main函數(shù)的最后加上return語句,雖然沒有這個(gè)必要,但這是一個(gè)好的習(xí)慣。
注意,vc6不會(huì)在目標(biāo)文件中加入return 0;,大概是因?yàn)関c6是98年的產(chǎn)品,所以才不支持這個(gè)特性?,F(xiàn)在明白我為什么建議你最好加上return語句了吧!不過,gcc3.2(Linux下的C編譯器)會(huì)在生成的目標(biāo)文件中加入return 0;。
2、C++
C++98中定義了如下兩種main函數(shù)的定義方式:
int main()
int main(int argc,char*argv[])
(參考資料:ISO/IEC 14882(1998-9-01)Programming languages—C++3.6 Start and termination)
int main()等同于C99中的int main(void);int main(int argc,char*argv[])的用法也和C99中定義的一樣。同樣,main函數(shù)的返回值類型也必須是int。
如果main函數(shù)的末尾沒寫return語句,C++98規(guī)定編譯器要自動(dòng)在生成的目標(biāo)文件中加入return 0;。同樣,vc6也不支持這個(gè)特性,但是g++3.2(Linux下的C++編譯器)支持。
3、關(guān)于void main
在C和C++中,不接收任何參數(shù)也不返回任何信息的函數(shù)原型為“void foo(void);”??赡苷且?yàn)檫@個(gè),所以很多人都誤認(rèn)為如果不需要程序返回值時(shí)可以把main函數(shù)定義成void main(void)。然而這是錯(cuò)誤的!main函數(shù)的返回值應(yīng)該定義為int類型,C和C++標(biāo)準(zhǔn)中都是這樣規(guī)定的。
雖然在一些編譯器中,void main可以通過編譯(如vc6),但并非所有編譯器都支持void main,因?yàn)闃?biāo)準(zhǔn)中從來沒有定義過void main。
g++3.2中如果main函數(shù)的返回值不是int類型,就根本通不過編譯。而gcc3.2則會(huì)發(fā)出警告。所以,如果你想你的程序擁有很好的可移植性,請(qǐng)一定要用int main。
4、返回值的作用
main函數(shù)的返回值用于說明程序的退出狀態(tài)。如果返回0,則代表程序正常退出,否則代表程序異常退出。下面我們?cè)趙inxp環(huán)境下做一個(gè)小實(shí)驗(yàn)。首先編譯下面的程序:
int main(void)
{
return 0;
}
然后打開附件里的“命令提示符”,在命令行里運(yùn)行剛才編譯好的可執(zhí)行文件,然后輸入“echo%ERRORLEVEL%”,回車,就可以看到程序的返回值為0。
假設(shè)剛才編譯好的文件是a.exe,如果輸入“adir”,則會(huì)列出當(dāng)前目錄下的文件夾和文件。但是如果改成“return-1”,或者別的非0值,重新編譯后輸入“adir”,則dir不會(huì)執(zhí)行。
因?yàn)榈暮x是:如果前面的程序正常退出,則繼續(xù)執(zhí)行后面的程序,否則不執(zhí)行。也就是說,利用程序的返回值,我們可以控制要不要執(zhí)行下一個(gè)程序。這就是int main的好處。
如果你有興趣,也可以把main函數(shù)的返回值類型改成非int類型(如float),重新編譯后執(zhí)行“adir”,看看會(huì)出現(xiàn)什么情況,想想為什么會(huì)出現(xiàn)那樣的情況。順便提一下,如果輸入a||dir的話,則表示如果a異常退出,則執(zhí)行dir。
參考資料:
百度百科——return(C語言語句)