c语言中,计算字符串长度算是一个比较经典的题了,而今天我们运用两种不同的求解方法来写出不同的程序来实现计算字符串的功能。
主函数
先看到主函数,主函数中设置了一串7个字符的字符串,而后面接下来定义了两个变量len1和len2,同时分别打印len1和len2,当然,打印的这两个变量其实就是上面我所说的两种不同的方法打印的字符串长度,我们也知道若是程序正确,那输出的结果是7;最终,我们得把焦点聚集到my_strlen1和my_strlen2这两个函数中。
方法1
在my_strlen1函数中,首先将主函数中已经定义好的arr数组传参到函数中,然后建立一个变量count,接下来运用while语句和指针的方式进行字符判断,这里的核心是判断指针解引用之后的字符是不是\0,而我们也知道\0是一个字符的结束标志,所以在没有发现\0时,将指针的位置++(因为我们是将一个数组名传过去,所以指针刚开始指向的字符是数组中的首字符a),同时将计数的count变量也++,直到我们的指针解引用到\0,循环结束,返回return count。
方法2(递归)
在my_strlen2函数中,同样是实现了计数字符串长度的功能,但是用的却是完全不同的方法,而这种方法的书写核心思想是运用了递归思想,可以发现在递归思想中,函数里没有设置变量,同时也没运用循环语句,只有一个分支语句if便能实现计算字符串长度的功能。同样在if语句中,我们进行对指针解引用的判断,看解引用后的字符是不是\0,若不是\0返回1+my_strlen2(它本身),也就是说循环调用my_strlen2这个函数,来实现计算字符串的功能。