一般是需要主函數(shù)提供保存數(shù)據(jù)的數(shù)組,在參數(shù)中給出數(shù)組起始地址,然后子函數(shù)在其中填充,比如要準(zhǔn)會(huì)的整數(shù)是56
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、東臺(tái)ssl等。為數(shù)千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的東臺(tái)網(wǎng)站制作公司
void fun(int *a,int b) { ... }
void main() { int a[20];
fun(a,56);
}
一維數(shù)組的元素作為函數(shù)實(shí)參,與同類型的簡(jiǎn)單變量作為實(shí)參一樣,是單向的值傳遞,即數(shù)組元素的值傳給形參,從而形參是改變不影響實(shí)參
數(shù)組名代表著整個(gè)數(shù)組的地址,如果一維數(shù)組的名字作為函數(shù)實(shí)參,傳遞的是整個(gè)數(shù)組,即形參數(shù)組和實(shí)參數(shù)組完全相同,是存放在同一存儲(chǔ)空間的同一個(gè)數(shù)組。這樣形參數(shù)組
修改時(shí),實(shí)參數(shù)組也同時(shí)被修改了。形參數(shù)組的元素個(gè)數(shù)可以省略。
#includestdio.h
//數(shù)組作為函數(shù)參數(shù),可以省略元素個(gè)數(shù)
//數(shù)組作為函數(shù)參數(shù),傳遞是整個(gè)數(shù)組的地址,修改了函數(shù)形參數(shù)組元素的值,會(huì)影響到外面的實(shí)參數(shù)組
void change(int array[])
{
printf("array ==%p\n",array);
array[0] = 100;
}
int main()
{
int ages[6] = {10,11,13,15,11,18};
printf("array ==%p\n",ages);
change(ages);
printf("%d\n",ages[0]);
return 0;
}
輸出結(jié)果為: array ==0x7fff5be26c00
array ==0x7fff5be26c00
100
接受數(shù)組的方法很多1維數(shù)組a[]你可以
func(int *a);
func(int a[]);
func(int a[10]);
這3中方法的是沒區(qū)別的,
但是要在函數(shù)中獲取一位數(shù)組的長(zhǎng)度是不可能的,這是C/C++的一個(gè)無法解決的問題。你可以再定義一個(gè)形參限定一下對(duì)數(shù)組操作的大小,
比如func(int *a,int N);
這樣的前提是你要知道你所操作數(shù)組必須長(zhǎng)度小于N
gets從標(biāo)準(zhǔn)輸入設(shè)備讀字符串函數(shù)。可以無限讀取,不會(huì)判斷上限,以回車結(jié)束讀取,所以程序員應(yīng)該確保buffer的空間足夠大,以便在執(zhí)行讀操作時(shí)不發(fā)生溢出。從stdin流中讀取字符串,直至接受到換行符或EOF時(shí)停止,并將讀取的結(jié)果存放在buffer指針?biāo)赶虻淖址麛?shù)組中。換行符不作為讀取串的內(nèi)容,讀取的換行符被轉(zhuǎn)換為‘\0’空字符,并由此來結(jié)束字符串。
因?yàn)間ets函數(shù)是以換行符為分隔,所以用一層循環(huán)即可讀取一個(gè)二維數(shù)組。對(duì)于每行字符串,使用sscanf讀取每個(gè)數(shù)。
例如:
char?s[100];
int?a[3][3],i;for(i=0;i3;i++){
gets(s);
sscanf(s,"%d%d%d",s[i],s[i]+1,s[i]+2);
}