C語言 數(shù)組元素作為函數(shù)參數(shù)
數(shù)組元素就是下標(biāo)變量,它與普通變量并無區(qū)別。數(shù)組元素只能用作函數(shù)實(shí)參,使用方法與普通變量相同。形參是一個(gè)普通變量。參數(shù)傳遞過程為,在發(fā)生函數(shù)調(diào)用時(shí),把數(shù)組元素的值傳送給形參,實(shí)現(xiàn)單向值傳送。
【例題】判斷字符串中單詞數(shù)量
判斷一字符串中有多少個(gè)單詞,每個(gè)空格隔開的是兩個(gè)單詞。
算法分析:
只需要統(tǒng)計(jì)這個(gè)字符串中有多少個(gè)空格,然后在空格的個(gè)數(shù)上加1就是單詞的個(gè)數(shù)。加1是因?yàn)樽詈笠粋€(gè)單詞后面沒有空格。
把判斷是否是空格的過程定義為一個(gè)函數(shù)ispaceO,實(shí)參是字符數(shù)組中的每個(gè)元素,形參是一個(gè)字符型變量。
ispaceO函數(shù)判斷每個(gè)傳遞過來的實(shí)參,如果是空格,返回1,否則返回0。main()函數(shù)中,通過一個(gè)循環(huán)將每個(gè)字符數(shù)組元素傳遞給ispaceO函數(shù)進(jìn)行判斷,如果是0,單詞個(gè)數(shù)+1。
程序代碼如下:
#include <stdio.h>
int ispace(char c)
{
if(c==' ') /* 如果是空格,返回1,否則返回0 */
return 1;
return 0;
}
main()
{
char str [30];
int n=0,i;
printf("input a string!\n");
gets(str);
for(i=0;str[i]!=0;i++)
{
if(ispace (str[i]))
/* 將每個(gè)字符作為實(shí)參調(diào)用count()函數(shù),如果結(jié)束函數(shù)調(diào)用返回值為i,是一個(gè)空格,說明是一個(gè)單詞*/
n++:
}
printf("The number words in dialoag is %d\n",n+l);
}
通過【例題】可以看出以下幾點(diǎn):
(1)用數(shù)組元素作實(shí)參時(shí),只要數(shù)組類型和函數(shù)的形參類型一致即可,并不要求函數(shù)的形參也是下標(biāo)變量。換句話說,對(duì)數(shù)組元素的處理是按普通變量對(duì)待的。
(2)和普通變量做實(shí)參一樣,數(shù)組元素作為實(shí)參在參數(shù)傳遞過程中也是值傳遞的形式。形參變量和實(shí)參數(shù)組元素是由編譯系統(tǒng)分配的兩個(gè)不同的內(nèi)存單元,在函數(shù)調(diào)用時(shí)只是將實(shí)參數(shù)組元素的值賦予形參變量,形參的改變并不能帶回實(shí)參數(shù)組元素。
點(diǎn)擊加載更多評(píng)論>>