i=2不解释,输出SWI后‘L’不输出,继续输出T,‘E’不输出,继续输出CH;
碰到1时,未被转义,此时的1为字符‘1’,所以符合case ‘1’这一步,break
碰到\1时,表示数字1,符合 case 1这一步,执行while,连续输出几个字符;
单步后你会熟悉各种符号在字符串中的表现的。
真正的入口地址对一个特定系统是固定的,即固定地址,而整个软件的入口需要对应到这个固定地址上。软件中哪个是入口得看makefile指定的link参数,一般而言汇编entry是入口,他先运行bootloader,它需要判断运行状态(下载、工厂模式、nand flash搬移、正常运行等等)。原理类似,特定系统可能存在特定的规定,得具体情况具体分析结果是:Please
input
a
string:The
result
is:
0
0
0
0
0
从main函数开始执行,
遇到printf语句后输出Please
input
a
string:
这时你输入This
is
a
tree并赋给s
然后调用fun函数
此函数调用过程是:因为数组名就是数组的首地址,这时实参是把s数组的地扯传给了形参s的,
num传的也是数组的首地址,所以接下来如果在fun函数中对他们俩进行了修改的话,
实际的参数也是同时进行了修改的.
第一个for语句将数组元素都设为0
因为此时的s是指向"This
is
a
tree"这个字符数组的首地址,
其*s就是'T',当然不等于'\0'.所以此时会让i=-1.
刚说了*s是‘T’,所以它不与switch中任何一种情况相同。
所以它不会执行swihch中的语句。后面的if语句不成立。因为i=-1。
最后s++,s这时指向数组下一个元素,即‘h’。
函数调完后,接着执行下一条printf语句,输出The
result
is:并回车
因为数组里的元素在fun函数中改过了,都是0。所以输出的都就是五个0了。