c语言基础题,麻烦解答一下谢谢

劳情详答
图片说明图片说明

1.c中字符常量分两种,普通字符和转义字符,普通字符没啥好说的,转义字符就是以‘\’(转义标志)打头的字符,像'\n','\t','\0',等
都是常见的转义字符,他们虽然由两部分组成但是表示的是一个字符,所以题目中的‘\n’只+1;另外函数strlen计数时不会把‘\0’算入(就像作文字数并不会把句号算进去一样)所以第一题答案是3。
2.题目中func()函数中的m,n和主函数中的m,n虽然名字相同,可是并不是一个东西,你在func()函数中对他的m,n做任何操作都不会影响你主函数中m,n的值,两个函数就像平行世界一样,所以题目实际上两次调用func()时给他的值都是k=4,m=1。
实在不理解的话可以把func()函数改个名,看成m1,k1。

  1. strlen遇到\0就结束了,只有a,b,\n三个字符的长度

2.func函数里的参数数值都没变,结果肯定是一样的

1.先明白strlen是怎么实现的,它的工作原理?;2.func 1)参数不是引用,没有对参数实体操作(参数不变);2)函数体没有静态变态,全局变量等;3)用相同参数调用相同的函数;所以首先等到的两个值应该是相等的,
再把参数代入函数计算,也就是8