www.fltk.net > #inCluDE <stDio.h> voiD Fun(ChAr *C) { whilE...

#inCluDE <stDio.h> voiD Fun(ChAr *C) { whilE...

你在程序里有判断if(*c>='a'&&*c你主函数输出的是s[5],也就是你输入的第五个字符,你输入的是空格,对应的ascii码值就是32.而你在子函数里输出的时候,用的是c[5],此时while循环已经执行完,*c为0,但是c[5]是c后面第五个地址中的数据,此数据不是你处理过的,是内存中原来的数,应该是个不确定的值.18只是个巧合,你换个时间,或是换台机器运行,也有可能是其它值.另外,你的程序还有一个问题,就是s[13],你应该只输入12个字符,因为字符串结尾还要加一个'\0',如果你输入13个字符,会溢出的.程序小没有问题,程序大的时候,会出问题的.

c 第一个循环结束后,a指向的内容是:a*b**** 第二个循环是故意这么写的这个是写代码需要避免的情况,如果有这样的需求,最好加上括号把判断条件写进去,避免混淆比如: while ((*b = *a) != 0) 这样就是把a的内容复制到b指向的字符数组中 函数执行完毕后,t数组中保存的就是"a*b****"

开始a='A',b='a' 进入fun函数后,c指针指向b,a的值传给了d,所以*c='a',d='A' 然后做加法,*c='b',d='B' 输出'bB' 退出fun函数后,因为第一个参数是指针,所以b变成了'b',因为第二个参数是值,所以a仍是'A' 再输出就是'bA'了

相关搜索:

网站地图

All rights reserved Powered by www.fltk.net

copyright ©right 2010-2021。
www.fltk.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com