C语言 数组元素作为函数参数
数组元素就是下标变量,它与普通变量并无区别。数组元素只能用作函数实参,使用方法与普通变量相同。形参是一个普通变量。参数传递过程为,在发生函数调用时,把数组元素的值传送给形参,实现单向值传送。
【例题】判断字符串中单词数量
判断一字符串中有多少个单词,每个空格隔开的是两个单词。
算法分析:
只需要统计这个字符串中有多少个空格,然后在空格的个数上加1就是单词的个数。加1是因为最后一个单词后面没有空格。
把判断是否是空格的过程定义为一个函数ispaceO,实参是字符数组中的每个元素,形参是一个字符型变量。
ispaceO函数判断每个传递过来的实参,如果是空格,返回1,否则返回0。main()函数中,通过一个循环将每个字符数组元素传递给ispaceO函数进行判断,如果是0,单词个数+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]))
/* 将每个字符作为实参调用count()函数,如果结束函数调用返回值为i,是一个空格,说明是一个单词*/
n++:
}
printf("The number words in dialoag is %d\n",n+l);
}
通过【例题】可以看出以下几点:
(1)用数组元素作实参时,只要数组类型和函数的形参类型一致即可,并不要求函数的形参也是下标变量。换句话说,对数组元素的处理是按普通变量对待的。
(2)和普通变量做实参一样,数组元素作为实参在参数传递过程中也是值传递的形式。形参变量和实参数组元素是由编译系统分配的两个不同的内存单元,在函数调用时只是将实参数组元素的值赋予形参变量,形参的改变并不能带回实参数组元素。
点击加载更多评论>>