因为第一个参数是地址传递,fun(&b,a)中传入a字符。*c=*c+1将c的值变为b字符。主函数的值改变。
第二个参数是值传递,所以在函数中d的值为B字符。但是并不影响主函数的值,所以主函数输出a的值是A。b的值是b。
char pt(char *s){
//定义一个局部的char型指针 pr
char *pr
//将指针s中保存的地址赋值给指针pr,这样指针pr指向的地址和指针s指向的地址相同
pr=s
//判断指针pr指向的地址中保存的值是否为非零
while(*pr)
//如果非零,将指针pr指向的地址中保存的值进行自加 *** 作,并使用putchar函数输出
putchar(*pr++)
}
char pt(char *s)
{
//这个没有定义一个局部的指针,而是直接使用了形参指针s,直接对指针s指向的地址中保存的值进行判断是否非零
while(*s)
//如果非零,将指针s指向的地址中保存的值进行自加 *** 作,并使用putchar函数输出
putchar(*s++)
}
两个函数的功能没什么区别,所执行的 *** 作都是一样的,只不过是一个在函数体内使用了局部指针变量,一个没有使用而已。
void fun(char *c,int d)使用指针作为参数时,指针变量c指向了变量b,当c变化时,b也会变化。这里*c=*c+1,是*c由a变为b。
第二个参数d变化时,a并不会变化。
%e是一种转换说明符号,表示浮点数,并且采用e计数法。
比如2.12e2
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)