void func1(int i)//函数的声明,为了调用函数
void func2(int i)
char st[]="hello,friend!"
void func1(int i)//通过man函数的调用给i赋值
{
printf("%c",st[i])//输出st[0]的值 即st[0]=h
if(i<3)
{
i+=2
func2(i)//调用函数func2,把值2的给i
}
}
void func2(int i)
{
printf("%c",st[i])//输出st[2]的值 即st[2]=l
if(i<3){
i+=2
func1(i)//嵌套调用函数func1(4),输出st[4]的值 即st[4]=o
}
}
main()
{ int i=0
func1(i)
printf("\n")
}
//故程序输出的结果为hlo
本程序输出的结果是:a = ‘A’, b = 'b'。
也就是说实参b的值加了1,而a的值则没变,为什么呢?
首先,我们说一下b的值为什么会加1:在函数fun中的第一个形参是一个指针变量,fun(&b,a)中&b的意思是取b的地址,而*c在这里其实就是b的值,这里的*c = *c+1是对b的值直接进行 *** 作的,因此,b的值会变。
而a的值不变,是因为在C语言中,实参向形参的数据传递方向是单向传递,也就是说,只由实参传给形参,而不能由形参传回给实参。除非我们加个返回值,如
int fun(char *c, int d) //带返回值得函数{
*c = *c+1
d = d + 1
return d //将加1后的d值返回
}
void main()
{
char a='A',b='a'
a = fun(&b,a) //将返回的值赋给a
printf("%c,%c\n",a,b)
}
这个程序关系到C语言的两个内容,1、指针 2、函数的参数和函数的值 ,建议找一本C语言程序设计的书阅读这两个章节,一切都迎刃而解。
user目录里的程序输出文件流程:1、先判断给定的是不是一个合法的目录,如果不是,则提示给定错误。
2、如果是目录,那么使用File.listFile获得这个目录下文件名的数组。
3、循环遍历输出这个数组元素。
4、输出名称之后,接着判断这个元素是文件还是目录。
5、如果是目录,继续调用本方法来输出子目录。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)