C的指针有必要吗?

既然指针是C的特色,那么C能通过指针做到哪些其他语言不能做到的事?如果指针能做到的事任何一个语言都能做到,那指针,甚至C还有存在的必要吗... 既然指针是C的特色,那么C能通过指针做到哪些其他语言不能做到的事?如果指针能做到的事任何一个语言都能做到,那指针,甚至C还有存在的必要吗 展开
 我来答
百度网友eb6ab18
2020-03-30 · TA获得超过583个赞
知道小有建树答主
回答量:1068
采纳率:83%
帮助的人:244万
展开全部
指针其实就是存储地址的变量,如果存储变量、函数等地址的变量如果可以被直接访问(可读也可写),那么这个语言就是支持指针的。指针虽然灵活强大,但是对指针的操作一但失误,访问了操作系统禁止的区域,程序有可能直接崩溃(被操作系统直接杀死),完全没有进退的余地。所以后来才会出现很多托管类的语言,如Java、C#等。当然后者的出现还有其他重要的原因,如面向对象,但是封装了指针,不让程序员过分操心地址,也是一个目的。
C语言因为可以操作指针,所以可以直接访问硬件地址。Java或C#是没有这种能力的,它们只能通过系统提供的API或结合C/C++来完全这部分功能(严格地说,C#的非托管代码也可以访问指针,但不常用也不推荐)。
所以“指针能做到的事”这个概念是不成立的。指针只是一种访问地址的方法,其他语言不通过指针,也可以(而且必须)访问地址,而且更安全些。
C语言的存在是不可替代的,在很多与硬件打交道的领域(嵌入式系统、单片机、操作系统、驱动程序、物联网等)还是C语言的主战场。这些场合还没有发展起来强大丰富的运行环境,C语言的高效和灵活还是最受欢迎的。
追问
答得好,C确实是不可或缺的,另外像“指针能做到的事”这么问确实是我欠考虑,因为任何一个语言都必须能访问地址。
或许我想知道的是指针的 【实际应用】和【只有指针才能完成的任务】 以及【使用指针来优化程序】的场景有哪些,如果只是int *a = &b;这样写只能让我知道指针怎么用,完全不知道指针该用在哪。我知道有链表和字符串,其他的完全不知道了
追答

指针的具体在各种场合有所不同,如果你有兴趣的话,可以看看Linux内核代码,那可以说是C语言的一个现实版精华。指针在内核中发挥了很多作用,举两个例子:

  1. C语言不是面向对象的,没有类和对象的概念,所以内核的编写者们主要通过结构体来模拟类,那么对“类”成员的引用(如一个类里包含另一个类的列表),那么就可以通过指针数组来方便地实现。

  2. 内核包含大量的系统调用,C指针的一大功能,即指向函数的指针在这里就发挥了大作用,它可以让内核里像使用面向对象中类的方法一样,把函数方便地组织起来,数量庞大但是不会乱套。

小黑哎啊
科技发烧友

2020-03-30 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:1642
采纳率:74%
帮助的人:338万
展开全部
学好C,就是在编程语言方面打好了基础;再学其他编程语言就势如破竹;
至于指针,刚接触时,“MD哪个睿智玩意发明的指针”,到现在会了一点一点“哎呀,真香”;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式