你好, 欢迎回来｡ 我们还有另一个挑战给你｡
在这个挑战中, 我希望你学习所有关于指针算术的知识｡
请记住, 指针算术是一个非常简洁的概念｡
这是一个符号概念｡
但它确实说明了数组是如何与指针相关联的｡
你可以用一个非常简单的语法很容易地遍历一个数组, 这减少了你的代码行, 这是一个非常简洁的概念｡
所以你们要学习所有关于指针运算的知识｡
我们还将学习更多关于常量修饰符的知识｡
所以在这个挑战中, 我希望你们写一个程序来测试你们对指针算术和const修饰符的理解｡
我们在前面的课上已经学习了这两个概念｡
所以我想让你写一个函数来计算字符串的长度｡
要求是函数应将参数常量char指针作为参数｡
一个常量字符指针意味着你不能改变指针所指向的值, 也不能改变长度.
函式只能使用指标算术来判断字串的长度｡
我不想让你使用字符串长度函数｡ 我要你用指针算术｡
我设想这个函数的实现方式是, 你要得到指针末端的地址｡
这实际上就是指针的长度｡
但是要得到最后一个字符串的地址和指针, 你可以写一个while循环.
while循环可以一直到空终止符｡
或者空终止符, 记住,
它用int表示｡
所以空终止符实际上是一个0｡
所以你可以写一个while循环,
while循环的条件就是解除指针的引用.
因为如果d引用指针的值是零, 跳出循环,
那将是空终止符｡
所以我想让你把整个指针都看一遍｡
当你浏览它的时候, 继续增加指针｡
所以现在你有一个指针指向字符串的末尾｡
然后要真正计算长度, 你所要做的就是减去两个指针｡
传入的指针是字符串的开头, 然后是在函数中创建的指针,
它指向字符串的结尾｡
如果你从字符串指针的开头减去字符串指针的结尾, 你就得到了字符串的长度｡
所以你要做的是指针运算,
一个一个的递增指针, 直到结束地址,
然后你要用点运算, 减去每个指针.
这可能是使用点运算进行减法的最有效的方法｡
你通常不加两个指针, 因为你为什么要加两个地址｡
你可以把两个地址相减来得到两个元素在数组中的距离, 这是有意义的,
但加法就没有意义了｡
所以只是重申一下, 该函数只能使用点运算来确定字符串的长度｡
在函数中创建一个局部指针, 每次递增该指针以到达末尾, 直到看到null终止符,
即一个简单的while循环｡
一旦你有了结束地址,
你已经有了开始地址, 减去这两个指针, 你就给予了长度｡
您应该从函数中以int的形式返回该长度｡
然后你就可以打印出实际长度了｡
这个赋值语句让你熟悉了点运算,
以及如何使用常量修饰符, 因为你不想改变它所指向的实际值, 也不想用两个指针相减,
还使用了一个while循环, 你可以通过查看指针本身的值来确定空字符｡
祝你好运
下节课我会给出一个解答｡ -谢谢—谢谢