现在的位置: 首页 > 综合 > 正文

指针的魅力

2013年02月14日 ⁄ 综合 ⁄ 共 1043字 ⁄ 字号 评论关闭

http://blog.csdn.net/zhanxinhang/article/details/6737656


指针说:love me,love me!

但是他对指针说:I hate u,I hate u!

……

 

指针仅仅是作为指针,我们可以把它当做有用的工具,为我们提供便利与好处。说起工具不得不让我想起一样东西——锄头,因为原人类有了锄头才使人类文明进入了开荒造田的农业时代,解决了温饱,开启了人类新纪元。可以这么说吧锄头使人类文明得到进步,没有锄头也就没有今天的我们,其地位与重要性可想而知。那么我们的指针何以能发挥像锄头那样惊人的魅力呢?

 

魅力1
算法之找我的名字——简单,灵活,快捷

以下算法功能是在一个字符串中查找长度为8的一个字符子串,比如我的名字“ZhanHang”就是一个8长度的字串。算法解释:因为字串myname的长度为8,也就是它是一个8字节的内存连续的数组,而myname指向这一段内存。又Long long 指针类型是一个指向8字节内存的类型,因此就可以将myname转换成long long 类型指针,如此在进行子串的比较时,就可以直接比较两个long long 类型的变量即可,免去了对子串进行遍历的麻烦。详情请看代码。

  1. #include <stdio.h>  
  2.   
  3. int find_my_name(const char* str, int str_len, const char* myname)  
  4. {  
  5.     long long *pkey = (long long*)myname;  
  6.     long long *curr_str = NULL;  
  7.     str_len = str_len - sizeof(long long); //此处是为了for循环作的优化处理,因为后面7个字符不需要遍历检测了  
  8.     for(int i=0; i<=str_len; i++)  
  9.     {  
  10.         curr_str = (long long*)&str[i]; //得到一个新的子串  
  11.         if( *pkey ==  *curr_str ) //判断两个字串是否相等  
  12.             return i+1;  //返回子串在字串中的位置  
  13.     }  
  14. }  
  15. /** 
  16. Author:花心龟 
  17. Blog:http://blog.csdn.net/zhanxinhang 
  18. **/   
  19. int main()  
  20. {  
  21.     char

抱歉!评论已关闭.