大家晚上好呀,今天就昨晚遗留的坑进行填补,解决昨晚遗留的问题。然后再分享一下指针和一维数组的知识点。
首先我们先从主函数分析这样做的原因,我们定义了一个数组arr[]然后放了一个字符串进去,然后自定义一个函数 my-strlen,然后调用arr,因为arr数组名 ,我们都知道数组名是一个指针,所以我们自定义的函数的形参就是要是一个指针型的,这就有了那个char*str形参。 然后补充一下指针减去指针(必须是指向同一个指针才有效)等于这个数组之间的元素的个数 ,所以只要我们用字符串里的最开始的地址减去最后元素的地址就可以实现了求元素个数。
要找到首地址很简单,但是末地址怎么找呢?我们可以通过循环如果char*end不等于‘\0’就end ++;这样就可以啦。
接下来就是指针和一维数组的主场了
我们都知道数组名是一个指针名,而且这个指针名绝大多数都是指向了数组的首元素的地址,但是有两种情况就不是,哪两种?
1,就是&+数组名的时候,这时候就不是表示取首元素的地址了,而是整个数组的地址。
2,就是sizeof(数组名),这时候也是求一个数组的大小
接下来我们可以求一个数组的大小,有两种方法,第一就是通过数组下标的地址,第二就是通过指针。
通过指针的办法就是我昨天的内容加今天更新的解释,然后现在演示第一种。
很简单的代码,只要取首元素的地址和末尾的地址就好了。
然后就是,指针是可以可以比较大小的我们通过一个例子来说明。
如果p的地址是等于最后一个的地址,用它和第一个地址进行比较,如果要比第一个大就执行p自减,然后再取那个地址的值
最后赋值。但是我的代码好像出了点问题,我明天再看看。
晚安,明天见。