C语言中为什么要设计指针?

c_language 2006-04-20 08:53:44
如何客观评价指针的利弊。在程序语言中,指针是不是必须的?
还有一个问题:
程序语句的三种结构很好理解,显然它和“逻辑学”应该有一定的关系。那么函数呢?它的理论基础是什么?也就是为什么在程序设计语言中要引入“函数”。
类似的还有“宏定义”、“结构体”。它们各自的依据是什么,不可能是“无缘无故”的吧!
...全文
351 21 打赏 收藏 举报
写回复
21 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
寻开心 2006-04-21
孔乙己还问那个回字有多少种写法呢

指针是c语言的最有特色的东西
是不是没有它就解决不了了某个具体的问题呢,不是的
只是有了它有了更多的可能性
  • 打赏
  • 举报
回复
zez 2006-04-21
楼主是学哲学的..
这年头,哲学家也来编程???

用的着钻牛角尖么??

计算机刚出来的时候没有函数,都是 用手打开关闭开关,后来用打孔的纸带.
后来有了汇编..
再后来才有了高级的语言..
再后来出来了c,出现了结构体,函数. 为什么有这些,因为这样方便,省事!!
  • 打赏
  • 举报
回复
以前不是有位朋友提到过(当然在很多书本里也有),malloc系列函数分配的对象没有名字,必须用指针才能引用。用来回答这个问题,是不是有启发性?C是一个静态类型语言,通过malloc希勒函数可以获得一定在运行时的弹性,没有指针则不能获得这种动态性,或者即使获得也不能使用它。
  • 打赏
  • 举报
回复
TryBoYang 2006-04-21
看什么样的需要了。
在系统软件和嵌入式开发这样需要高效运行效率的领域,操作指针比其他的方法快很多。
面向对象语言的指针只是对程序员屏蔽掉而已,其语言内部还是有大量指针。
  • 打赏
  • 举报
回复
jixingzhong(瞌睡虫:选择了远方,只顾风雨兼程!) ( ) 信誉:102 2006-04-20 21:06:00 得分: 0


呵呵,
楼主可能有些过于狭隘了~

在 java 中没有指针,
也没有函数,
有的只是 类,方法 ....


————————————————————————————

在Java语言中虽然没有明确的指针定义,实质上每一个new语句返回的都是一个指针的引用
  • 打赏
  • 举报
回复
武稀松 2006-04-21
指针的历史非常悠久了,从Pascal开始就引入了指针的概念.
指针固然可能带来危险.但是指针直接访问内存却是设计底层和操作系统的必须.
所以高级语言设计操作系统只有两大据有指针的族系PASCAL(包含MODULE,ADA)和C(包含C,C++).
Pascal可以说是开创了现代高级语言的先河.它发扬光大了结构话设计,函数式语言.并且它引入的CASE语句、记录和指针等新概念一直使用到今天.Pascal之父的话"数据+算法=程序"也是现代设计开发的经典语言.
C在继承了Pascal有用的元素以后去掉了Pascal的呆板(也去掉了严谨和优雅的自然语言语法).
到今天几乎ALGOL家族统一了全部的开发语言.(C,Pascal是它的最大的两个后代).
语法都是一脉相承的.都是有用的.
  • 打赏
  • 举报
回复
c_language 2006-04-21
我只所以有这些问题,是想弄清楚技术背后的思想,因为我觉得只有弄清楚最本质的东西,才能以不变应万变.不管什么技术,它背后总有理论思想和原理.

为什么计算机要用CPU?
把我所知,这好象与冯诺依曼所提出的程序存储原理有关.

为什么我们买的电脑需要一个机箱?
这还用问吗?肯定是为了保护内部的元器件,同时还可以起到防止辐射的作用,加一个机箱还可以使计算机更美观,何乐而不为呢?


我有这样一个观点,不知对不对?
每一件事物的出现和引入都会有它的原因,不会无缘无故的出现.
  • 打赏
  • 举报
回复
lengsehuoyan 2006-04-21
管理内存
  • 打赏
  • 举报
回复
september_29 2006-04-21
为什么计算机要用CPU为什么,我们买的电脑需要一个机箱?
为什么??
  • 打赏
  • 举报
回复
swabc 2006-04-21
不讨论这么无聊的问题
  • 打赏
  • 举报
回复
Piboye 2006-04-21
指针其实是不能避免的问题,以我看到的语言来说,每种语言都有指针。
从汇编,C,C++到pascal,VB,Delphi,C#,Java,perl....
好多语言自称是没有指针,其实是换汤不换药,一样都有指针。
好多语言用句柄来代替C中的指针,可是你想想那不还是指针吗?
C中指针很多人都认为是指向内存地址的,其实在现代的计算机系统中,这些指针在大多数情况下也就是个程序逻辑地址,它要经过段变换和页变换才能找到真正的物理地址。
这些过程也涉及到查表,这和前面的句柄不是一样了吗。

C语言中指针之所以搂来非议,你因为C,C++中的指针都是row的,太原始了,限制太少,没有智能。
其它语言只是多加了指针的限制和智能化一点,后就改名了。
C++语言可以做的很好在指针的封装中。

所以说不是指针不好,而是要把指针用到位,该row就row,该smart就smart
  • 打赏
  • 举报
回复
adintr 2006-04-21
计算机为什么要设计内存?
  • 打赏
  • 举报
回复
hazuki9902 2006-04-21
如何客观评价指针的利弊。在程序语言中,指针是不是必须的?
---------------------------------------------------------]
本人愚顿,限于交流,所言可能不详.但是指针确实是C的精髓所在.
程序语言中,指针不是必须的.
用C指针可以直接访问内存单元,提供了最低层,最直接的操作,因此效率自然比其他高级语言优越
也正是由于可以直接访问内存单元的特点,如果程序中指针没有操作好(申请\初始化\偏移量操作\有效性检查),轻则造成运行失败,重至系统崩溃...
  • 打赏
  • 举报
回复
wind19 2006-04-21
指针是一个好东西,可以很方便得解决一些问题,只是比较难,看你的造诣了,其实java中也用到指针的原理的
  • 打赏
  • 举报
回复
megaboy 2006-04-21
如何客观评价指针的利弊。在程序语言中,指针是不是必须的?
------------------------------------------------------
从必要性来说的话,别说指针,即使其它东西也没有什么是必要的。一门语言之所以有这种或那种东西,基本取决于语言发明人是如何想的。

之所以要引入“函数”的概念,其渊源应该是数学思想,与计算机无关。
  • 打赏
  • 举报
回复
rickerliang 2006-04-21
函数是程序设计思维的一次很大的飞跃,其中心思想就是把变化的东西封装起来
  • 打赏
  • 举报
回复
逸学堂 2006-04-21
研究一下CPU的构成,就知道指针的用处了。

BTW:CPU通过地址总线获取地址,在通过数据总线读取数据。
这典型是一个指针调用。所以说语言中没有指针,那么首先先从硬件上
取消指针调用。
  • 打赏
  • 举报
回复
jixingzhong 2006-04-20
楼主可以去了解一些 计算机语言的 发展历程 ...
  • 打赏
  • 举报
回复
jixingzhong 2006-04-20
呵呵,
楼主可能有些过于狭隘了~

在 java 中没有指针,
也没有函数,
有的只是 类,方法 ....
  • 打赏
  • 举报
回复
gjianpro 2006-04-20
和计算机硬件结构有关,没有指针就不叫C语言了
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
C语言
加入

6.6w+

社区成员

C语言相关问题讨论
社区管理员
  • C语言
  • 小灸舞
申请成为版主
帖子事件
创建了帖子
2006-04-20 08:53
社区公告
暂无公告