指针的魅力

本文探讨了指针在编程中的重要作用,包括作为算法工具提高效率,实现迭代器,增强函数扩展性,高效函数传递,构建数据结构,以及动态内存分配。通过实例解释了指针在字符串搜索、链表、二叉树等中的应用,并强调了正确使用指针以避免野指针和空指针问题的重要性。理解并善用指针对于提升编程技能和理解底层机制至关重要。
摘要由CSDN通过智能技术生成


指针的魅力


指针说: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 类型的变量即可,免去了对子串进行遍历的麻烦。详情请看代码。

#include <stdio.h>

int find_my_name(const char* str, int str_len, const char* myname)
{
    long long *pkey = (long long*)myname;
    long long *curr_str = NULL;
    str_len = str_len - sizeof(long long); //此处是为了for循环作的优化处理,因为后面7个字符不需要遍历检测了
    for(int i=0; i<=str_len; i++)
    {
        curr_str = (long long*)&str[i]; //得到一个新的子串
        if( *pkey ==  *curr_str ) //判断两个字串是否相等
            return i+1;  //返回子串在字串中的位置
    }
}
/**
Author:花心龟
Blog:http://blog.csdn.net/zhanxinhang
**/ 
int main()
{
    char str[]="alZhanhangadf";
    char myname[]="Zhanhang";
    printf("my name at %d\n",find_my_name(str,sizeof(str)/sizeof(char),myname));//输出结果是3
    
    return 0;
}
  • 23
    点赞
  • 172
    收藏
    觉得还不错? 一键收藏
  • 91
    评论
评论 91
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值