指针有什么用(为什么要用指针 详解指针在编程中的重要性)

2025-07-10 20:15:01 :0

指针有什么用(为什么要用指针 详解指针在编程中的重要性)

各位老铁们,大家好,今天由我来为大家分享指针有什么用,以及为什么要用指针 详解指针在编程中的重要性的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

本文目录

为什么要用指针 详解指针在编程中的重要性

使用指针可以动态分配内存,这是一种在程序运行时根据需要分配和释放内存的方法。比如,在程序中需要动态创建一个数组,可以使用指针来分配内存。动态分配内存的好处是可以减少内存的浪费,提高程序的效率。
动态分配的内存必须在使用完后进行释放,否则会导致内存泄漏。可以使用free函数来释放动态分配的内存。
3. 实现数据结构
指针是计算机编程中非常重要的概念,可以让程序员更加灵活地操作计算机内存,从而实现更加高效的程序设计。指针的应用范围非常广泛,可以用于动态分配内存、传递参数、实现数据结构和访问硬件设备等方面。在使用指针时,需要注意指针的初始化、越界访问和释放等问题。
指针还可以用于访问硬件设备,如显卡、声卡等。在操作系统和驱动程序中,指针可以用于访问设备的寄存器和内存,从而实现对设备的操作。

为什么要使用指针指针的好处在哪里

指针使用比较灵活,如果说它的好处,根据我平时编程时的感受,大概有这么几点:
1.在数据传递时,如果数据块较大(比如说数据缓冲区或比较大的结构),这时就可以使用指针传递地址而不是实际数据,即提高传输速度,又节省大量内存。
2.数据转换,利用指针的灵活的类型转换,可以用来做数据类型转换,比较常用于通讯缓冲区的填充,比如说,一个数据缓冲区char buf为某一数值,类型为int,就可以使用如下语句进行赋值:
*(short*)&buf=cmdID;
*(short*)&buf=type;
*(int*)&buf=value;
3.字符串指针,是使用最方便,且常用的。
4.函数指针,形如:#define PMYFUN (void*)(int,int),可以用在大量分支处理的实例当中,如某通讯根据不同的命令号执行不同类型的命令,则可以建立一个函数指针数组,进行散转。
5.在数据结构中,链表、树、图等大量的应用都离不开指针。

指针究竟有什么用

别的话不想多说,说多了你也不理解,用什么语言不重要,只有经验累积到一定程度你才会有体会,任何技术的存在都有其历史渊源,指针最大的好处两点

1,大数据传递,只要传递地址就等于传递N多数据,速度快

2,传递函数地址,实现回调,事件调用(这个对于设计模式非常有用)

回调函数,建议去了解下windows的消息机制,回调函数是多任务的基础,细节就不展开了。函数地址的传递是个非常有用的技术,可以实现很多灵活的操作,没有一定工作经验是无法体会的。

举个极其简单例子吧,有一个int的数组,要遍历所有元素查找最大值,要写一个循环,循环中编写比较大小的代码,比如 if (a》b){max=a.....},最后返回最大值,这个没有问题。现在我要增加一种算法,求最小值,那么你必须另外写个函数,同样的循环体,不同的地方就是循环内的代码不同,要改成 if (a《b){min=a.....},诸如此类的算法很多,当你的业务中有大量的循环处理时,你会发现需要编写N多的函数,其中除了函数名称和循环体内算法不一样外,函数构成几乎一模一样. 另一方面,如果我要遍历的不是int类型数组呢?那岂不要写N多的重载函数?

一个有思(tou)想(lan)的程序员绝对不可接受这样的情况出现.

如何缩减代码量,可不可以将不同的核心处理代码单独打包定义,而我只要编写一个包含循环体的遍历函数就可以了呢?而我只需要定义打包各类不同的算法,当我需要时把其中算法代码的地址传递给循环函数,不就可以了吗?更进一步,如果函数或者核心处理代码能够接受和设别不同类型元素的数组,那岂不是非常完美了?

因此能够传递函数地址的需求就出现了,其实回调函数,事件响应都是这个机制,函数指针的意义是当编译前无法确定处理方式时,或者如何处理数据的决定权不在循环内时,就需要事件回调函数或事件触发机制来完成,而这些机制的基础就是函数指针.

所以指针的意义可不是简单的操作一个变量那么简单,它的影响意义相当深远,以我的知识面所知,为实现多态以至于工厂模式建立的基础.

PS:不要认为VB C#没有指针,如果没有VB就无法实现回调和事件响应. 也不要认为操作内存没用,那是你还不需要用到.

顺便截一段代码片段,我日常工作需要VBA遍历数据表的遍历器的循环部分,就用到了事件触发和处理单元挂接的机制.

再补充一下C#的委托,其实委托也是利用的指针,只不过C#中隐藏了,换了个名称:委托.本质是一样的.C#中存在大量的泛型类,其实就是实现了一个接口多种调用的需求,所谓泛型类就是一个变量或者一个函数接口可以存储传递不同的数据类型,而不像int这种基础类型只能存储整数类型,如此一来减少了很多代码量,当然代价就是性能.

比如list类型,它是个泛型数组类,封装了很多方法/函数,其中find方法就是前面我上面提到的需求,find只提供循环遍历,查找的匹配条件需要另外给出,如此一来C#无需提供N多的重载函数,增加了灵活性减少的代码量,由于FIND的工作就是查找,因此参数很简单,要求匹配函数返回bool值,指示循环是否结束.

FIND的参数就是个函数委托/指针,FIND内部有个循环从索引0开始遍历所有元素,取得元素之后就会调用proc,而proc就是程序员提供的匹配代码,要求返回bool.如果为true则循环结束返回找到的对象.注意list的元素可以是任何对象实例.

C#实现了很多程序员的需求,而vb中则因为是早期的语言,只能自己编写遍历器,但是只要你理解这些需求或思想,完全可以实现相同的功能.

学习编程最重要的是学习思想而不是代码,语言和代码真的不重要,它们只是用来实现你思想的工具.码这么多字,只是想说明一点,你以为不需要不应该存在的东西一直存在着,只是因为语言的更新封装了变形了更方便了. 此例中proc就是个指针而且是函数指针,C#中声明一个委托就是声明指针,只是称呼不一样,调用或者代码形式不一样.

指针的作用

  在计算机科学中,指针是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,所以地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。在高级语言中,指针有效地取代了在低级语言,如汇编语言与机器码,直接使用通用暂存器的地方,但它可能只适用于合法地址之中。

OK,关于指针有什么用和为什么要用指针 详解指针在编程中的重要性的内容到此结束了,希望对大家有所帮助。

指针有什么用(为什么要用指针 详解指针在编程中的重要性)

本文编辑:admin

更多文章:


食肉菌是什么引起的(食肉杆菌是什么它一般是通过什么方式侵入人体的)

食肉菌是什么引起的(食肉杆菌是什么它一般是通过什么方式侵入人体的)

大家好,今天小编来为大家解答以下的问题,关于食肉菌是什么引起的,食肉杆菌是什么它一般是通过什么方式侵入人体的这个很多人还不知道,现在让我们一起来看看吧!本文目录食肉杆菌是什么它一般是通过什么方式侵入人体的吃死肉的细菌叫什么罕见的食肉细菌侵入

2025年8月5日 08:15

另我空间complex汉化版下载(请问ntrpg2游戏手机汉化版)

另我空间complex汉化版下载(请问ntrpg2游戏手机汉化版)

大家好,今天小编来为大家解答以下的问题,关于另我空间complex汉化版下载,请问ntrpg2游戏手机汉化版这个很多人还不知道,现在让我们一起来看看吧!本文目录请问ntrpg2游戏手机汉化版创世秩序完结汉化版在哪下载疯狂喷气机汉化版官网下载

2026年4月8日 20:15

哪里做网络推广(目前有哪些渠道,可做网络推广呀)

哪里做网络推广(目前有哪些渠道,可做网络推广呀)

这篇文章给大家聊聊关于哪里做网络推广,以及目前有哪些渠道,可做网络推广呀对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录目前有哪些渠道,可做网络推广呀比较好的网络推广平台有哪些互联网推广渠道有哪些网络推广有哪些平台做网络推广有

2025年12月15日 23:45

华东师范大学 黄(黄民生的介绍)

华东师范大学 黄(黄民生的介绍)

本篇文章给大家谈谈华东师范大学 黄,以及黄民生的介绍对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录黄民生的介绍华东师范大学副教授名单华东师大二附中黄流中学多少分录取华东师范大学高校专项初审名单华东师范大学教师名录学士服黄领是

2025年11月11日 01:15

switch什么时候出的(任天堂新款Switch什么时候发售)

switch什么时候出的(任天堂新款Switch什么时候发售)

大家好,今天小编来为大家解答以下的问题,关于switch什么时候出的,任天堂新款Switch什么时候发售这个很多人还不知道,现在让我们一起来看看吧!本文目录任天堂新款Switch什么时候发售psp和switch哪个先出switch什么时候出

2025年11月11日 10:30

前端怎么打断点调试debugger(android debugger 调试怎么用)

前端怎么打断点调试debugger(android debugger 调试怎么用)

“前端怎么打断点调试debugger”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看前端怎么打断点调试debugger(android debugger 调试怎么用)!本文目录android debugger 调试怎么用py

2025年7月19日 00:30

嵌入式属于本科什么专业(嵌入式属于什么专业)

嵌入式属于本科什么专业(嵌入式属于什么专业)

“嵌入式属于本科什么专业”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看嵌入式属于本科什么专业(嵌入式属于什么专业)!本文目录嵌入式属于什么专业嵌入式开发属于计算机专业 还是电子工程专业大学学什么专业里包括嵌入式系统工程,未

2025年5月30日 08:00

completely change(希望能彻底改变自己 别再跟以前那么幼稚了 尽力而为吧我! 求翻译成英文)

completely change(希望能彻底改变自己 别再跟以前那么幼稚了 尽力而为吧我! 求翻译成英文)

本篇文章给大家谈谈completely change,以及希望能彻底改变自己 别再跟以前那么幼稚了 尽力而为吧我! 求翻译成英文对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您

2026年5月5日 09:30

九宫格滑块拼图解法(九宫格移动拼图口诀是什么)

九宫格滑块拼图解法(九宫格移动拼图口诀是什么)

大家好,今天小编来为大家解答以下的问题,关于九宫格滑块拼图解法,九宫格移动拼图口诀是什么这个很多人还不知道,现在让我们一起来看看吧!本文目录九宫格移动拼图口诀是什么2021春节九宫格拼图素材,九宫格图片是怎么做的啊就是把几张图片拼接九宫格拼

2025年6月23日 12:45

在线学ps教程(想学PS,应该怎么学)

在线学ps教程(想学PS,应该怎么学)

各位老铁们,大家好,今天由我来为大家分享在线学ps教程,以及想学PS,应该怎么学的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录想学PS,应该怎么学

2025年6月21日 22:15

java中inputstream(Java中InputStream的读取方式是什么)

java中inputstream(Java中InputStream的读取方式是什么)

“java中inputstream”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看java中inputstream(Java中InputStream的读取方式是什么)!本文目录Java中InputStream的读取方式是什么

2026年9月12日 11:30

scanf用法举例加法(关于scanf的用法)

scanf用法举例加法(关于scanf的用法)

大家好,今天小编来为大家解答以下的问题,关于scanf用法举例加法,关于scanf的用法这个很多人还不知道,现在让我们一起来看看吧!本文目录关于scanf的用法c语言scanf的用法c语言中的scanf 函数的用法scanf 加法运算关于s

2025年9月7日 05:30

正则表达式提取汉字(python怎么用正则表达式提取中文)

正则表达式提取汉字(python怎么用正则表达式提取中文)

今天给各位分享python怎么用正则表达式提取中文的知识,其中也会对python怎么用正则表达式提取中文进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录python怎么用正则表达式提取中文excel vba中利

2026年8月29日 20:00

label标签accesskey(label标签不是只有for 和accesskey属性吗下面代码中的<label class=“as“> 里面的class表示什么意思)

label标签accesskey(label标签不是只有for 和accesskey属性吗下面代码中的<label class=“as“> 里面的class表示什么意思)

大家好,label标签accesskey相信很多的网友都不是很明白,包括label标签不是只有for 和accesskey属性吗下面代码中的 里面的class表示什么意思也是一样,不过没有关系,接下来就来为大家分享关于label标签acce

2026年2月10日 15:15

导航条代码生成器(百度地图生成器获得代码后怎么使用)

导航条代码生成器(百度地图生成器获得代码后怎么使用)

今天给各位分享百度地图生成器获得代码后怎么使用的知识,其中也会对百度地图生成器获得代码后怎么使用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录百度地图生成器获得代码后怎么使用ai2020条码生成器在哪电脑条形

2026年7月17日 19:45

用于删除数据的sql语句是(SQL语句中删除表中数据的语句是)

用于删除数据的sql语句是(SQL语句中删除表中数据的语句是)

其实用于删除数据的sql语句是的问题并不复杂,但是又很多的朋友都不太了解SQL语句中删除表中数据的语句是,因此呢,今天小编就来为大家分享用于删除数据的sql语句是的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录S

2026年3月5日 01:45

数据分析师报考条件费用(cda数据分析师报名条件)

数据分析师报考条件费用(cda数据分析师报名条件)

本篇文章给大家谈谈数据分析师报考条件费用,以及cda数据分析师报名条件对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录cda数据分析师报名条

2025年7月31日 15:30

word文本框(word的文本框在哪)

word文本框(word的文本框在哪)

各位老铁们,大家好,今天由我来为大家分享word文本框,以及word的文本框在哪的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录word的文本框在哪

2025年6月17日 08:15

易语言游戏脚本培训(制作游戏脚本需要学习什么)

易语言游戏脚本培训(制作游戏脚本需要学习什么)

大家好,今天小编来为大家解答以下的问题,关于易语言游戏脚本培训,制作游戏脚本需要学习什么这个很多人还不知道,现在让我们一起来看看吧!本文目录制作游戏脚本需要学习什么想学编程有空自己做脚本,学那个软件的好呢易语言按键精灵还有其他吗那个比较好呢

2026年7月26日 03:30

python是什么工具(什么是python)

python是什么工具(什么是python)

“python是什么工具”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看python是什么工具(什么是python)!本文目录什么是pythonpython是干嘛的什么是python python是一种跨平台的计算机程序设计

2026年2月5日 18:45

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索